oracle logminer恢復truncate table的資料

wisdomone1發表於2012-09-28
編寫背景:
  近日除錯儲存過程,就未與同事商量先truncate了表,事後得知表中另一個部門插入的資料全沒了,為了想法找回資料,
  特測試了logminer的用法
 
  1,logminer可否用於恢復trucate table前的資料
  2,truncate table沒有備份
  3,oracle11g,非歸檔模式
測試紀要
--1,在scott使用者下建立測試表
 create table t_truncate_before(a int);
 insert into t_truncate_before values(1);
 insert into t_truncate_before values(2);
 commit;
 select * from t_truncate_before;--查詢是有1,2兩條記錄
 
--2,查詢當前日誌,用於確定分析的日誌
select * from v$log;--3
select * from v$logfile;--D:\ORACLE\ORADATA\ORCL\REDO03.LOG
--3,用logminer開始分析日誌
 alter system set utl_file_dir='c:\logminer' scope=spfile;--配置用於儲存logminer的目錄,並重啟庫
 shutdown immediate;
 startup;
--4,開始分析
SQL> execute dbms_logmnr_d.build('logminer.ora','c:\logminer');
 
PL/SQL procedure successfully completed
 
SQL> execute dbms_logmnr.add_logfile('D:\ORACLE\ORADATA\ORCL\REDO01.LOG',dbms_logmnr.NEW);
 
PL/SQL procedure successfully completed
 
SQL> execute dbms_logmnr.add_logfile('D:\ORACLE\ORADATA\ORCL\REDO02.LOG',dbms_logmnr.ADDFILE);
 
PL/SQL procedure successfully completed
 
SQL> execute dbms_logmnr.add_logfile('D:\ORACLE\ORADATA\ORCL\REDO03.LOG',dbms_logmnr.ADDFILE);
 
PL/SQL procedure successfully completed
--5,執行分析
SQL> execute dbms_logmnr.start_logmnr(DictFileName => 'c:\logminer\logminer.ora');
 
PL/SQL procedure successfully completed
/*
SQL> execute dbms_logmnr.start_logmnr(0,100,to_date('2012-9-28 00:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2012-9-28 15:52:00','yyyy-mm-dd hh24:mi:ss'),'c:\logminer\logminer.ora');
 
begin dbms_logmnr.start_logmnr(0,100,to_date('2012-9-28 00:00:00','yyyy-mm-dd hh24:mi:ss'),to_date('2012-9-28 15:52:00','yyyy-mm-dd hh24:mi:ss'),'c:\logminer\logminer.ora'); end;
 
ORA-01291: 缺失日誌檔案
ORA-06512: 在 "SYS.DBMS_LOGMNR", line 58
ORA-06512: 在 line 2
*/
--6,查詢分析結果
 --在plsql developer中sql視窗與命令視窗不同,必須同一個視窗執行,如下檢視才會有結果
select * from v$logmnr_contents;-- ORA-01306: 在從 v$logmnr_contents 中選擇之前必須呼叫 dbms_logmnr.start_logmnr()
select * from v$logmnr_logfile
select * from v$logmnr_transaction
--7,小結
  1,非歸檔也可恢復表的truncate之前資料
  2,再次說明溝通的重要性,尤其對於多部門協作的專案
  3,除錯儲存過程前一定要備份表或預先與相關人員溝通,減少誤操作

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

相關文章