oracle数据误操作恢复【flashback闪回操作】
幾張表的數(shù)據(jù)全部執(zhí)行了delete * 操作。
接到問題立刻知道了事件的嚴(yán)重性,立即開始研究解決辦法。
了解到數(shù)據(jù)庫是oracle 10G。 經(jīng)查詢可以使用flashback閃回操作進(jìn)行恢復(fù),這下放心了,說做就做。
閃回操作的具體步驟
1.開啟Flash存儲的權(quán)限
ALTER TABLE tablename ENABLE row movement ;
2.把數(shù)據(jù)表還原到指定時刻
flashback table tablename to timestamp to_timestamp('2010-07-17 10:40:00','yyyy-mm-dd hh24:mi:ss');
ok ~! 原來這么簡單。
如果具體時間不清楚的話,可以查看日志,不過當(dāng)時由于時間緊急我們并沒有那么做,而是采用偷懶的方法 去試
select * from table_name as of timestamp to_timestamp('2010-07-17 10:40:00','yyyy-mm-dd hh24:mi:ss');
說明:上面這種方式可以恢復(fù)【誤刪】【誤改】【誤插入】等誤操作之前的數(shù)據(jù)。不過時間記得越準(zhǔn)確越好。
如果drop了表,怎么辦??見下面:
drop table 表名;
數(shù)據(jù)庫誤刪除表之后恢復(fù):(絕對ok,我就做過這樣的事情,汗)不過要記得刪除了哪些表名。
flashback table 表名 to before drop;
如果記不住刪除了那個表可以通過下面的語句查詢:
select * from recyclebin;
?
一:表的恢復(fù)
???? 對誤刪的表,只要沒有使用PURGE永久刪除選項,那么從flash back區(qū)恢復(fù)回來希望是挺大的。一般步驟有:
1、從flash back里查詢被刪除的表
??? select * from recyclebin
2.執(zhí)行表的恢復(fù)
?? flashback table tb to before drop,這里的tb代表你要恢復(fù)的表的名稱。
二:表數(shù)據(jù)恢復(fù)
??? 對誤刪的表記錄,只要沒有truncate語句,就可以根據(jù)事務(wù)的提交時間進(jìn)行選擇恢復(fù),一般步驟有:
???? 1、先從flashback_transaction_query視圖里查詢,視圖提供了供查詢用的表名稱、事務(wù)提交時間、UNDO_SQL等字段。
???? 如:select * from flashback_transaction_query where table_name='TEST';
???? 2、執(zhí)行表記錄恢復(fù)
???? 一般先根據(jù)時間進(jìn)行查詢,查詢語句模式為select * from tb as of timestamp to_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名稱,time指某個時間點(diǎn)
????? 如select * from scott.test as of timestamp to_timestamp('2009-12-11 20:53:57','yyyy-mm-dd hh24:mi:ss');
??? 若有數(shù)據(jù),恢復(fù)極為簡單了,語句為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');
轉(zhuǎn)載于:https://www.cnblogs.com/wycc/archive/2012/06/21/2557775.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的oracle数据误操作恢复【flashback闪回操作】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这一年,我们毕业了
- 下一篇: 封装+构造方法小例子