oracle數據誤操做恢復【flashback閃回操做】

幾張表的數據所有執行了delete * 操做。 
接到問題馬上知道了事件的嚴重性,當即開始研究解決辦法。 
瞭解到數據庫是oracle 10G。 經查詢可使用flashback閃回操做進行恢復,這下放心了,說作就作。 

閃回操做的具體步驟 
1.開啓Flash存儲的權限 
ALTER TABLE tablename ENABLE row movement ; 
2.把數據表還原到指定時刻 
flashback table tablename to timestamp to_timestamp('2010-07-17 10:40:00','yyyy-mm-dd hh24:mi:ss'); 
ok ~! 原來這麼簡單。 

若是具體時間不清楚的話,能夠查看日誌,不過當時因爲時間緊急咱們並無那麼作,而是採用偷懶的方法 去試 數據庫

select * from table_name as of timestamp to_timestamp('2010-07-17 10:40:00','yyyy-mm-dd hh24:mi:ss'); oracle

說明:上面這種方式能夠恢復【誤刪】【誤改】【誤插入】等誤操做以前的數據。不過期間記得越準確越好。 日誌

若是drop了表,怎麼辦??見下面: 事件

drop table 表名;
數據庫誤刪除表以後恢復:(
絕對ok,我就作過這樣的事情,汗)不過要記得刪除了哪些表名。 
flashback table 表名 to before drop;
事務

若是記不住刪除了那個表能夠經過下面的語句查詢: get

select * from recyclebin; flash

 

一:表的恢復 io

     對誤刪的表,只要沒有使用PURGE永久刪除選項,那麼從flash back區恢復回來但願是挺大的。通常步驟有: table

一、從flash back裏查詢被刪除的表 test

    select * from recyclebin

2.執行表的恢復

   flashback table tb to before drop,這裏的tb表明你要恢復的表的名稱。

二:表數據恢復

    對誤刪的表記錄,只要沒有truncate語句,就能夠根據事務的提交時間進行選擇恢復,通常步驟有:

     一、先從flashback_transaction_query視圖裏查詢,視圖提供了供查詢用的表名稱、事務提交時間、UNDO_SQL等字段。

     如:select * from flashback_transaction_query where table_name='TEST';
     二、執行表記錄恢復

     通常先根據時間進行查詢,查詢語句模式爲select * from tb as of timestamp to_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名稱,time指某個時間點

      如select * from scott.test as of timestamp to_timestamp('2009-12-11 20:53:57','yyyy-mm-dd hh24:mi:ss');

    如有數據,恢復極爲簡單了,語句爲flashback table tb to timestamp to_timestamp(time,'yyyy-mm-dd hh24:mi:ss');

   如flashback table scott.test to timestamp to_timestamp('2009-12-11 20:47:30','yyyy-mm-dd hh24:mi:ss');

相關文章
相關標籤/搜索