oracle使用閃回技術還原表數據。

 強大的ORACLE10G開始有一個東西叫閃回:flashback技術。它支持還原一定時間內的數據。包括整個數據庫,表等。

   在演示前確認以下幾點:

          1、用戶有對dbms_flashback包有執行權限!----若沒有 grant execute on dbms_flashback to username          

           2、進行閃回查詢必須設置自動回滾段管理,在init.ora設置參數UNDO_MANAGEMENT=AUTO,參數UNDO_RETENTION=n,決定了能往前閃回的最大時間,值越大

                   需要越多Undo空間。

                 show parameter undo_retention;

                 alter sysstem set undo_retention = 7200; ----7200秒即2小時

           3.開啓行移動

               alter table tbscmp enable row movement;

   接下來演示最常用的還原表數據的方法:

   select * from tbscmp;

    實驗開始:先刪除掉其中一條數據508094

  delete tbscmp where code='508094';

   --確認刪除
 select * from tbcmp where code='508094';

---使用versions查詢出 versions_xid
select versions_xid,code,name from tbscmp versions between scn minvalue and maxvalue where code='508094';
--查出還原sql
select operation,undo_sql from flashback_transaction_query where xid=hextoraw('03001500A2110100')
---使用還原sql
insert into "SWSERP02"."TBSCMP"("TBSCMPID","CODE","NAME","FULLNAME","KIND","TBSAREAID","PARENTID","LAYERNO","LAYERINDEX","TBSCMPLEVELID"。。。。
--再次查詢確認已還原
select * from tbscmp where code='508094';

下面使用SCN號進行還原
--再刪除
delete tbscmp where code='508094';

---使用versions查詢出 versions_xid
select versions_xid,code,name from tbscmp versions between scn minvalue and maxvalue where code='508094';
--查詢此操作對應的閃回SCN
select operation,start_scn from flashback_transaction_query where xid=hextoraw('03001500A2110100');
--確認開啓行移動功能
alter table tbscmp enable row movement;
--使用SCN閃回
flashback table tbscmp to SCN 101943274;
--再次查詢確認已還原
select * from tbscmp where code='508094';

推薦使用UNDOSQL,因爲使用SCN會連在這期間的其他操作一起還原

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章