如何進行恢復PLSQL閃回誤刪除FlashBack Delete表
1.SCN 概念
SCN是當Oracle數據庫更新后,由DBMS自動維護去累積遞增的一個數字。Oracle數據庫中一共有4種SCN分別為
系統檢查點SCN: 系統檢查點SCN位于控制文件中,當檢查點進程啟動時(ckpt),Oracle就把系統檢查點的SCN存儲到控制文件中
2. 使用閃回操作時一些前提條件
-
該表的Flashback權限
-
擁有該表的SELECT\INSERT\DELETE\ALTER權限
-
必須保證表示ROW MOVEMENT
-
采用PURGE參數刪除表中數據時不能使用Flashback進行恢復
3. 閃回查詢
-
作用: 用以查詢以前的被刪除資料,用以在執行刪除恢復時,有一個正確的scn或者時間戳,系統并沒有進行恢復
-
語法: select * from bxj_tst_recyclebin as of [scn or timestamp]
4. 閃回恢復
-
作用: 通過已確認的SCN和時間戳對表被刪除的數據真正進行恢復
-
語法: flashback table bxj_tst_recyclebin to [scn or timestamp]
5. 閃回查詢恢復前,執行以下語句
alter table bxj_tst_recyclebin enable row movement
二、案例1 - 通過時間戳進行閃回恢復
Step1. 創建8筆測試資料如下
Step2. 刪除其中4筆資料,COMMIT后無法Rollback,通過flashback進行恢復
Step3.1 通過時間間隔確定需恢復的時間戳,在沒有恢復之前, 通過閃回查詢該事件戳為8筆資料,確定以該時間戳進行恢復
alter table bxj_tst_recyclebin enable row movement
Step3.2 直接通過具體的時間戳進行恢復, 在沒有恢復之前, 通過閃回查詢該事件戳為8筆資料,確定以該時間戳進行恢復
Step4. 通過flashback進行恢復
flashback table bxj_tst_recyclebin to timestamp(systimestamp - interval'600'second);
flashback table bxj_tst_recyclebin to timestamp(to_timestamp(to_date('20140702 11:40:00','YYYYMMDD HH:MI:SS')));
Step5. 恢復完成后,無需閃回查詢,即可以查詢到該4筆被刪除資料
三、案例2 - 通過SCN進行閃回恢復
Step1. 系統一旦將事物Commit后,會系統產生一個SCN,一旦發現誤刪除數據,馬上查詢當前的SCN
Step2. 通過閃回查詢,確認該SCN是否能查詢出該4筆被刪除資料
Step4. SCN確認無誤后,進行閃回恢復操作
flashback table bxj_tst_recyclebin to scn 10132214657206
Step5. 恢復完成后,無需閃回查詢,即可以查詢到該4筆被刪除資料
原文鏈接:http://www.cnblogs.com/eastsea/p/3819908.html