本文用舉例的形式來講解使用LogMiner方法分析資料庫日誌。
◆一、安裝LogMiner工具
以下兩個指令碼以SYSDBA身份運行)
@$ORACLE_HOME\rdbms\admin\dbmslm.sql;@ $ORACLE_HOME\rdbms\admin\dbmslmd.sql; |
第一個指令碼用來建立DBMS_LOGMNR包,該包用來分析記錄檔。
第二個指令碼用來建立DBMS_LOGMNR_D包,該包用來建立資料字典檔案。
◆二、使用LogMiner工具
下面將詳細介紹如何使用LogMiner工具。
1、建立資料字典檔案data-dictionary)
1)首先在init.ora初始化參數檔案中,指定資料字典檔案的位置,也就是添加一個參數UTL_FILE_DIR,該參數值為伺服器中放置資料字典檔案的目錄。
如:UTL_FILE_DIR = ($ORACLE_HOME\logs) ,重新啟動資料庫,使新加的參數生效。
2)建立資料字典檔案:
SQL> connect /as sysdbaSQL> execute dbms_logmnr_d.build(dictionary_filename => 'dict.ora',dictionary_location => 'G:\oracle\logs');PL/SQL procedure successfully completed |
2、建立要分析的記錄檔列表:
1)建立分析列表,即所要分析的日誌:
SQL> execute dbms_logmnr.add_logfile(LogFileName => 'G:\ORACLE\ORADATA\ORADBSP\REDO04.LOG',Options => dbms_logmnr.new);PL/SQL procedure successfully completeds |
2)添加分析記錄檔一次添加1個為宜):
SQL> execute dbms_logmnr.add_logfile(LogFileName => 'G:\ORACLE\ORADATA\ORADBSP\REDO05.LOG',Options => dbms_logmnr.ADDFILE);PL/SQL procedure successfully completed |
3、使用logMiner進行日誌分析:
1)無限制條件,即用資料字典檔案對要分析的記錄檔所有內容做分析:
SQL> execute dbms_logmnr.start_logmnr(DictFileName => 'G:\oracle\logs\dict.ora');PL/SQL procedure successfully completed |
2)帶限制條件:
可以用scn號或時間做限制條件,也可組合使用--分析日誌列表中時間從07.02.28從10:00到15:00的內容。
SQL> execute dbms_logmnr.start_logmnr(startTime => to_date('20070228100000','yyyy-mm-dd hh24:mi:ss'),endTime => to_date('20070228150000','yyyy-mm-dd hh24:mi:ss'),DictFileName => 'G:\oracle\logs\dict.ora');PL/SQL procedure successfully completed |
dbms_logmnr.start_logmnr函數的原型為:
PROCEDURE start_logmnr(startScn INNUMBER default 0 ,endScnINNUMBER default 0,startTimeINDATE default '',endTime INDATE default '',DictFileNameINVARCHAR2 default '',Options INBINARY_INTEGER default 0 ); |
4、分析後釋放記憶體:
SQL> execute dbms_logmnr.end_logmnr;PL/SQL procedure successfully completed |
5、其它:
1)刪除日誌分析檔案:
exec dbms_logmnr.add_logfile('G:\ORACLE\ORADATA\ORADBSP\REDO04.LOG',dbms_logmnr.removefile); |