flashback table快速恢復誤刪除的數據

在Oracle數據庫操作中,經常會有不小心誤刪除數據、drop表的情況出現。以前,這種情況發生后,開發人員通常會去求助DBA或管理者,使用數據庫備份恢復去找回這些數據。 從Oracle 9i、10g開始,你可以不必去用備份來恢復了。有一種快速恢復方法,稱之為flashbac

在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’)

? 版權聲明
THE END
喜歡就支持一下吧
點贊13 分享