(個人)利用日誌挖掘恢復誤操作

許願流星1號發表於2014-11-20

如果誤刪除的時間超出了db_flashback_retention_target引數的範圍,無論是閃回表還是閃回數,必然對scn 4354137之後的操作有影響,誤刪除的資料重要,誤刪除之後的資料也重要,這時候如果選擇閃回技術就要權衡哪個更重要的問題啦,還好ORACLE8i開始,推出了LOGMNR日誌分析工具,借用LOGMNR工具,可以在不影響其他資料的同時找回誤刪除的資料。

初次使用,需要安裝,很簡單,只需要執行以下2個指令碼即可。

SQL> conn / as sysdba

Connected.

SQL> @?/rdbms/admin/dbmslm 程式包已建立。 授權成功。 

同義詞已建立。 

SQL> @?/rdbms/admin/dbmslmd 程式包已建立。 

同義詞已建立。 

SQL> select * from v$log;

SQL> select member from v$logfile;

 

SQL> execute dbms_logmnr.add_logfile('+DATA/orcl/onlinelog/group_1.263.846638823',dbms_logmnr.new);

 

挖掘每個日誌組的一個成員即可

 

 

SQL> execute dbms_logmnr.add_logfile('+DATA/orcl/onlinelog/group_1.262.846638805',dbms_logmnr.addfile);

 

SQL> execute dbms_logmnr.add_logfile('+DATA/orcl/onlinelog/group_2.265.846638853',dbms_logmnr.addfile);

 

 

進行日誌挖掘找到事務提交的

SQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog+dbms_logmnr.committed_data_only);

 

查詢某表的誤操作

 

select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='GOGO' order by scn;   我的gogo表無操作的scn285373

 

 

 

sys@PROD>flashback table scott.gogo to scn 285376;

flashback table scott.gogo to scn 285376

                      *

ERROR at line 1:

ORA-08189: cannot flashback the table because row movement is not enabled

 

 

sys@PROD>alter table scott.gogo enable row movement;   允許每行資料改變rowid

 

Table altered.

 

sys@PROD>flashback table scott.gogo to scn 285376;

 

Flashback complete.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29893219/viewspace-1340527/,如需轉載,請註明出處,否則將追究法律責任。

相關文章