Oracle中logmnr包的使用詳解
2024-08-29 13:44:18
供稿:網友
dbms_logmnr是Oracle在oracle8i所提供的新package。它主要用于分析log file文件(包括online redo log file,archived log file),將log file中的信息轉存到v$logmnr_contents中,從而獲取對oracle數據庫操作的歷史信息。 它不僅可以分析oracle8i的log file,也可以分析oracle8的log file。
dbms_logmnr包的具體使用步驟舉例如下:
一.在d:/oracle/admin/wlcdb/pfile/init.ora文件中加入utl_file_dir=d:/oracle,然后應用新的設置打開oracle數據庫。 二.執行SQL>execute dbms_logmnr_d.build,用于生成數據字典;假如沒有dbms_logmnr_d包,需手工執行@d:/oracle/ora81/rdbms/admin/dbmslmd.sql。 假如執行SQL>execute dbms_logmnr_d.build('wlcdbdict.ora','D:/oracle');
產生如下錯誤:
BEGIN dbms_logmnr_d.build('wlcdbdict.ora','D:/oracle '); END;
*
ERROR 位于第 1 行:
ORA-06532: 下標超出限制
ORA-06512: 在"SYS.DBMS_LOGMNR_D", line 793
ORA-06512: 在line 1
需要執行以下步驟,才能避免產生錯誤。
1.修改d:/oracle/ora81/rdbms/admin/dbmslmd.sql文件
打開dbms_logmnr_d包,將type col_desc_array is varray(513) of col_description這個數組的值改大一些 2.以sys/change_on_install身份登陸
sql*plus>connect sys/change_on_install
3.執行sql*plus>@d:/oracle/ora81/rdbms/admin/dbmslmd.sql 三.執行SQL>execute dbms_logmnr.add_file;將所要分析的log files加入到log list中。 可以查詢v$logmnr_logs獲取那些log files已加入log list中。
四.修改sysdate格式;
alter session set nls_date_format='yyyy-mm-dd:hh24:mi:ss';
五.從v$logmnr_logs中查詢low_time,high_time,low_scn,next_scn信息; 六.執行SQL>execute dbms_logmnr.start_logmnr,開始分析log file。 若想獲取此次分析所使用的參數,可以查詢v$logmnr_parameters視圖。
七.獲得結果信息;
假如需要對v$logmnr_contents進行大量的查詢,建議先將視圖中的內容轉存到另一table中,再進行查詢。
八.執行SQL>execute dbms_logmnr.end_ logmnr,清除v$logmnr_logs, v$logmnr_contents, v$logmnr_parmeters中的內容,結束分析。 結論:
logminer是oracle在oracle8i所提供的新package,Oracle8并沒有這個package;但Oracle8中也可以使用logminer。只需將oracle8.1.6之前(dbmslogmnrd.sql, dbmslogmnr.sql, PRvtlogmnr.plb)、oracle8.1.6之后(dbmslmd.sql, dbmslm.sql, prvtlm.plb)的文件拷貝到Oracle8所在的機器上并執行這些scripts即可。這樣Oracle8中也可以使用logminer。