有的時候我們不小心把資料庫表(emp)中重要的記錄給刪除了,怎麼給找回來了,看下面這個例子你就會明白。
某一天,10點鐘的時候,張三一不小心給資料庫表emp的一條重要記錄給刪除了並且還提交了,此時也沒有其他任何備份資料,
他十分驚恐,10:05分他的同事,也就是本人出現了在和他輕鬆的聊天中給出了如下解決方案,哈哈哈。。。
我:怎麼了
張:我把資料emp表的某幾條記錄給刪除了,我也不知道刪除的是那幾條。。。
我:不要急,大概是幾點刪除的
張:10點左右
我:恩,現在10:05分了,也就是5分鐘前刪除的,還不超過6分鐘
張:怎麼辦啊,我怎麼把那幾條資料給找回來啊,下午客戶那邊還要等著做資料示範了
我:冷靜點,讓我想想。。。有了,如果我們能夠找回6分鐘前的沒有刪除時候的資料那問題就解決了
找回6分鐘前的未經處理資料(注意6分鐘一定要是操作距現在的有效時間時間地區段,如果大於5分鐘不足6分鐘,
這個中間有沒有做任何操作那隻能堅持就小原則寫5,不然會報 ora-01466 : 無法讀取資料-表定義已更改)
select * from emp as of timestamp sysdate - 6/1440
我:現在你可以把原來的表哦刪掉直接建立備份一個表就可以了
create table emp as (select * from emp as of timestamp sysdate - 6/1440);
張:這到是一個好辦法,但是我們公司有規定,表不能隨表刪除,不然我的績效獎金就全部泡湯了。。。
張:能不能在補刪除原表的基礎上,把找回的記錄插入到原表中了
我:讓我,想想。。。有了。。。
我:我們可以做差,找到刪除的記錄=6分鐘前的未經處理資料-現在表中的記錄,再插入原來的表中,提交
insert into empselect * --6分鐘前刪除的記錄from(select * --6分鐘前刪除的記錄 from emp as of timestamp sysdate - 6 / 1440 --6分鐘前的未經處理資料 minus --減去 select * from emp --現在表中的記錄)
張:耶。。。可以了,thanks。。。