1、 明確時間範圍
根據時間確定需要挖據日誌的個數,將日誌分別加入指令碼中。
2、 編寫logminer指令碼
execute dbms_logmnr.add_logfile(logfilename=>'/home/Oracle/admin/ORCL/archive/ORCL_1_670176536_22124.dbf',options=>dbms_logmnr.new);
execute dbms_logmnr.add_logfile(logfilename=>'/home/oracle/admin/ORCL/archive/ORCL_1_670176536_22122.dbf',options=>dbms_logmnr.addfile);
execute dbms_logmnr.add_logfile(logfilename=>'/home/oracle/admin/ORCL/archive/ORCL_1_670176536_22118.dbf',options=>dbms_logmnr.addfile);
3、 執行指令碼
將SQL複製到SQL*PLUS中運行,通過alert日誌可以查看日誌的挖掘進度。
EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
每查看一次V$LOGMNR_CONTENTS,dbms_logmnr包都會去挖掘一次歸檔檔案,所以最好複製一份此表;
4、 建立暫存資料表
Logminer執行分析完畢後,會將挖掘的資訊儲存在視圖V$LOGMNR_CONTENTS,如果session退出,視圖內相應資料將會清除。因此,為了方便查
詢,可以通過建立暫存資料表將視圖中的資料儲存:
Create table lonmnr_tmp as select * from V$LOGMNR_CONTENTS;
5、 查詢目標SQL
根據查詢條件,可以確定目標SQL是否存在:
select username, operation, SQL_REDO,SQL_UNDO FROM lonmnr_tmp where SEG_OWNER = 'SCOTT';
在V$LOGMNR_CONTENTS中username有時候會顯示“UNKNOWN”狀態,說明是其他語句調用的關係,可以根據session#和serial#去ash
或者DBA_HIST_SESSION_HISTORY視圖中查詢資訊;