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

 上述三條語句就把數據恢復了。

發佈了87 篇原創文章 · 獲贊 376 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章