天天看点

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;