1. 程式人生 > >delete誤刪數據使用SCN恢復

delete誤刪數據使用SCN恢復

sha http roc 調試 -o ack oss ins ces

今天閑來無事,測試一下之前誤刪數據使用SCN恢復的經過。
本人不喜歡理論那一大套長篇概論,直接開始試驗:
首先查看當前SCN值,如果刪之後沒有查scn值。可以根據scn當前值往前調試,只要保證。你delete刪除之後中間沒有其他操作。

SELECT dbms_flashback.get_system_change_number FROM dual;

SELECT CURRENT_SCN FROM V$DATABASE;

技術分享圖片
技術分享圖片
知道當前SCN號了。SCN一直在增長,這個沒啥,然後查看某一個表數據:

select * from zjw.AA;

技術分享圖片
然後刪除這個表並且commit:

delete from zjw.AA

技術分享圖片
再來查查這個表: select * from zjw.AA
技術分享圖片
沒有數據了。然後根據SCN查看當時SCN值對應的這個表的數據

select * from ZJW.AA as of scn 12637719;

技術分享圖片
有數據,說明可以,然後來使用insert插入。吧這個數據插入到當前AA表內:

insert into zjw.AA select * from zjw.AA as of scn 12637719;

技術分享圖片
然後在查看這個表數據:

select * from zjw.AA

技術分享圖片
ok
成功恢復。
這裏說明一下。我前兩次差的SCN和最後使用的SCN值不一樣,這個沒關系。這個SCN值他一直再漲,所以只要是我delete之前的SCN值都可以。從我操作到delete之間的SCN任意一個都可以使用,

比如:我現在在根據SCN隨便插兩個也可以,我就用最先查到的SCN吧
如:

select from ZJW.AA as of scn 12637321;
select
from ZJW.AA as of scn 12637366;

技術分享圖片
看到沒有,結果一樣。

delete誤刪數據使用SCN恢復