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');
說明:上面這種方式可以恢復【誤刪】【誤改】【誤插入】等誤操作之前的數據。不過時間記得越準確越好。
如果drop了表,怎么辦??見下面:
drop table 表名;
數據庫誤刪除表之后恢復:(絕對ok,我就做過這樣的事情,汗)不過要記得刪除了哪些表名。
flashback table 表名 to before drop;
如果記不住刪除了那個表可以通過下面的語句查詢:
select * from recyclebin;
?
一:表的恢復
???? 對誤刪的表,只要沒有使用PURGE永久刪除選項,那么從flash back區恢復回來希望是挺大的。一般步驟有:
1、從flash back里查詢被刪除的表
??? select * from recyclebin
2.執行表的恢復
?? flashback table tb to before drop,這里的tb代表你要恢復的表的名稱。
二:表數據恢復
??? 對誤刪的表記錄,只要沒有truncate語句,就可以根據事務的提交時間進行選擇恢復,一般步驟有:
???? 1、先從flashback_transaction_query視圖里查詢,視圖提供了供查詢用的表名稱、事務提交時間、UNDO_SQL等字段。
???? 如:select * from flashback_transaction_query where table_name='TEST';
???? 2、執行表記錄恢復
???? 一般先根據時間進行查詢,查詢語句模式為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');
轉載于:https://www.cnblogs.com/wycc/archive/2012/06/21/2557775.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的oracle数据误操作恢复【flashback闪回操作】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这一年,我们毕业了
- 下一篇: 封装+构造方法小例子