1. 程式人生 > >flashback table快速恢復誤刪除的資料(Oracle恢復資料)

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; ----查詢結果

 上述三條語句就把資料恢復了。