幾張表的數據所有執行了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 ~! 原來這麼簡單。
若是具體時間不清楚的話,能夠查看日誌,不過當時因爲時間緊急咱們並無那麼作,而是採用偷懶的方法 去試html
select * from table_name as of timestamp to_timestamp('2010-07-17 10:40:00','yyyy-mm-dd hh24:mi:ss');數據庫
說明:上面這種方式能夠恢復【誤刪】【誤改】【誤插入】等誤操做以前的數據。不過期間記得越準確越好。oracle
若是drop了表,怎麼辦??見下面:ide
drop table 表名;
數據庫誤刪除表以後恢復:(絕對ok,我就作過這樣的事情,汗)不過要記得刪除了哪些表名。
flashback table 表名 to before drop;post
若是記不住刪除了那個表能夠經過下面的語句查詢:url
select * from recyclebin;日誌
一:表的恢復orm
對誤刪的表,只要沒有使用PURGE永久刪除選項,那麼從flash back區恢復回來但願是挺大的。通常步驟有:htm
一、從flash back裏查詢被刪除的表blog
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');