天天看點

LogMiner日志分析工具的使用

1.安裝logminer:

      要安裝LogMiner工具,必須首先要運作下面這樣兩個腳本,

      $ORACLE_HOME/rdbms/admin/dbmslm.sql

      $ORACLE_HOME/rdbms/admin/dbmslmd.sql.

      這兩個腳本必須均以SYS使用者身份運作。

*************使用字典檔案存儲在flat file中*****************************

2.建立資料字典檔案

      ALTER SYSTEM SET UTL_FILE_DIR = 'd:\oracle\logmnr' SCOPE=SPFILE;

      重新啟動資料庫,使新加的參數生效,然後建立資料字典檔案:

      EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dirctionary.ora', dictionary_location => 'D:\oracle\logmnr',options => dbms_logmnr_d.store_in_flat_file);

3.建立要分析的日志檔案清單

      EXECUTE dbms_logmnr.add_logfile(LogFileName=>'c:\1_3814.dbf', Options=>dbms_logmnr.new);

      EXECUTE dbms_logmnr.add_logfile( LogFileName=>'c:\1_3815.dbf',Options=>dbms_logmnr.addfile);

4.使用LogMiner進行日志分析

      EXECUTE dbms_logmnr.start_logmnr(DictFileName=>'D:\oracle\logmnr\dirctionary.ora');

***********************************************************************

*************使用字典檔案存儲在redo file中(推薦這種方法,不需要重新開機資料庫)*****************************

2.建立資料字典到redo file

      EXECUTE DBMS_LOGMNR_D.build(options => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);

      EXECUTE DBMS_LOGMNR.start_logmnr(Options => DBMS_LOGMNR_D.STORE_IN_REDO_LOGS);  --将字典檔案提取為REDO日志

      使用此方法時需要把包含字典資訊的歸檔日志或線上日志添加到日志檔案清單

      SQL>select name from v$archived_log where dictionary_begin='YES';

      SQL>select name from v$archived_log where dictionary_end-'YES';

或者

      EXECUTE dbms_logmnr.start_logmnr(Options => dbms_logmnr.DICT_FROM_ONLINE_CATALOG);  --使用聯機日志 

********************************************************************************************************

5.觀察分析結果

      CREATE TABLE temp AS SELECT * FROM v$logmnr_contents;

6.終止日志分析事務,此時PGA記憶體區域被清除,分析結果也随之不再存在

      EXECUTE dbms_logmnr.end_logmnr();

7.其他注意事項

     1. 使用參數COMMITTED_DATA_ONLY隻顯示已送出的事務:

     SQL>EXECUTE dbms_logmnr.start_logmnr(Options => dbms_logmnr.COMMITTED_DATA_ONLY); 

     2. 忽略REDO錯誤:

     SQL>EXECUTE dbms_logmnr.start_logmnr(Options => dbms_logmnr.SKIP_CORRUPTION); 

     Options 參數可以用+連接配接起來結合使用,例如:

     SQL>EXECUTE dbms_logmnr.start_logmnr(Options => dbms_logmnr.DICT_FROM_ONLINE_CATALOG+dbms_logmnr.COMMITTED_DATA_ONLY); 

     3. 按時間過濾資料:使用參數STARTTIME和ENDTIME

         SQL>EXECUTE dbms_logmnr.start_logmnr(STARTTIME=>SYSDATE - 1/24,ENDTIME=>SYSDATE);

     4. 按SCN過濾資料:使用參數STARTSCN和ENDSCN

  我們可以利用LogMiner日志分析工具來分析其他資料庫執行個體産生的重作日志檔案,而不僅僅用來分析本身安裝LogMiner的資料庫執行個體的redo logs檔案。使用LogMiner分析其他資料庫執行個體時,有幾點需要注意:

  1. LogMiner必須使用被分析資料庫執行個體産生的字典檔案,而不是安裝LogMiner的資料庫産生的字典檔案,另外必須保證安裝LogMiner資料庫的字元集和被分析資料庫的字元集相同。

  2. 被分析資料庫平台必須和目前LogMiner所在資料庫平台一樣,也就是說如果我們要分析的檔案是由運作在UNIX平台上的Oracle 8i産生的,那麼也必須在一個運作在UNIX平台上的Oracle執行個體上運作LogMiner,而不能在其他如Microsoft NT上運作LogMiner。當然兩者的硬體條件不一定要求完全一樣。

  3. LogMiner日志分析工具僅能夠分析Oracle 8以後的産品,對于8以前的産品,該工具也無能為力。

8.對于oracle 10g在使用logmnr時必須提前設定SUPPLEMENTAL LOG DATA

  ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

删除SUPPLEMENTAL LOG DATA功能

 ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;