Oracle11g使用logmnr(logminer)分析online log and archive log
為了分析online log和archive log我們首先需要知道這些日誌檔案的存在物理路徑,這時可以通過查詢v$logfile來獲取到online日誌的路徑和檔名對應sql:
select * from v$logfile;
查詢v$archived_log表可以知道歸檔日誌的路徑及檔名:
select * from v$archived_log;
查到online log的檔案和archived log檔案後,即可登入sqlplus 進行日誌的分析了,分析共以下幾步:
(1) 作業系統命令提示符下執行:
sqlplus /nolog
(2) sqlplus命令符下執行:
connect / as sysdba;由於logmnr對應的包中預設執行許可權為dba,因此可以直接用dba來執行相應的分析命令,當然也可以使用grant將對應包及物件的執行許可權符給某個使用者,這樣也可以使用該使用者登入oracle資料庫,執行相應的分析命令;
(3)exec dbms_logmnr.add_logfile(logfilename=>'&logPathFile',options=>dbms_logmnr.new);
--將日誌檔案加到logmnr中,注意logmnr是基於session的,因此如果退出當前登陸使用者,則對應的分析結果丟失,需要重新執行一遍操作;
(4)exec dbms_logmnr.add_logfile(logfilename=>'&logPathFile',options=>dbms_logmnr.addfile); --繼續往logmnr中新增日誌檔案,原來我想試一下這個add_logfile是否支援*新增批量檔案呢,結果不好使.
(5)
exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog); --開始執行分析
(6) select timestamp,sql_redo,sql_undo from v$logmnr_contents where username='SCOTT'and table_name='T_TEST'; --查詢v$logmnr_contents來查詢分析結果;
(7) exec dbms_logmnr.end_logmnr;