flashback table快速恢復誤刪除的資料(Oracle恢復資料)
flashback table快速恢復誤刪除的資料
原文連結:http://www.linuxidc.com/Linux/2012-09/70988.htm在Oracle資料庫操作中,經常會有不小心誤刪除資料、drop表的情況出現。以前,這種情況發生後,開發人員通常會去求助DBA或管理者,使用資料庫備份恢復去找回這些資料。
從oracle 9i、10g開始,你可以不必去用備份來恢復了。有一種快速恢復方法,稱之為flashback。你可以flashback query,也可以flashback table。
一、FLASHBACK QUERY
適應範圍:表中的資料持續變化,需要看到某個時間點錯誤刪除修改了某些記錄,可以根據這些記錄再進行資料恢復。
--閃回到15分鐘前
select * from orders as of timestamp (systimestamp - interval '15' minute) where ......
這裡可以使用DAY、SECOND、MONTH替換minute,例如:
SELECT * FROM orders AS OF TIMESTAMP(SYSTIMESTAMP - INTERVAL '2' DAY)
--閃回到某個時間點
select * from orders as of timestamp to_timestamp ('01-Sep-04 16:18:57.845993', 'DD-Mon-RR HH24:MI:SS.FF') where ...
--閃回到兩天前
select * from orders as of timestamp (sysdate - 2) where.........
二、FLASHBACK TABLE
1、表已經drop掉之後使用,可以快速恢復。
flashback table orders to before drop;
如果drop的表已經重新建立了一個同名稱的表,那麼需要加上rename to子句。
flashback table order to before drop rename to order_old_version;
2、表的資料錯誤刪除或修改後,沒有後續資料變化,可以快速恢復。
第一步,首先要啟用行遷移
alter table order enable row movement;
第二步,閃回表
到15分鐘前:
flashback table order to timestamp systimestamp - interval '15' minute;
到某個時間點:
FLASHBACK TABLE order TO TIMESTAMP TO_TIMESTAMP('2007-09-12 01:15:25 PM','YYYY-MM-DD HH:MI:SS AM')
非常感謝作者分享,我今天也是無意中刪除了Oracle的表,
alter table OPERATOR rename to OPERATOR_nNN; ---對重新建立的表改名
flashback table OPERATOR to before drop; ----恢復原始表
select * from OPERATOR; ----查詢結果
上述三條語句就把資料恢復了。