日期:2014-05-16  浏览次数:20492 次

oracle logminer 日志分析步骤
1,已dba角色操作 登录 sqlplus /as sysdba:

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL*Plus: Release 10.2.0.3.0 - Production on Wed Mar 28 00:21:32 201

Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.

SQL> conn /as sysdba
Connected.
SQL>

2,安装:
找到要执行的sql脚本:(该脚本可能随着版本不同,放置路径也不同,可以在oracle目录下搜索,搜索到后,copy到d:\oracle\logmnrsql 目录下)
   dbmslm.sql    用来创建DBMS_LOGMNR包,该包用来分析日志文件
   dbmslmd.sql   用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

3,执行脚本

SQL>@d:\oracle\logmnrsql\dbmslm.sql;
   package created
   grant succeeded
SQL>@d:\oracle\logmnrsql\dbmslmd.sql;
   package created


4, 创建数据字典文件目录
  数据字典文件是一个文本文件,由dbms_logmnr_d 来创建,

SQL> alter system set utl_file_dir = 'd:\oracle\log' scope = spfile;
  
  system altered

SQL> show parameter utl_file

NAME                                 TYPE        VALUE
------------------------------------ ----------- ----------------------------
utl_file_dir                         string      d:\oracle\log
SQL>
----d:\oracle\log 就是以后数据字典文件的目录。

5,手工创建目录 d:\oracle\log   用来存放数据字典文件使用。
  如果不手工创建此目录,下一步操作可能会提示 路径文件不可打开。


6,创建数据字典文件。
SQL>exec dbms_logmnr_d.build(dictionary_filename=>'logmnr_dict.ora',dictionary_location=>'d:\oracle\log');

   procedure successfullyy completed

7,创建要分析的日志文件(在线日志或归档日志)
SQL>exec dbms_logmnr.add_logfile(logfilename=>'D:\oracle\product\10.2.0\oradata\orcl\REDO01.LOG',options=>dbms_logmnr.new);

  pl/sql procedure successfully completed

-----可以增加多个日志文件,不过最好每次分析一个日志文件。
exec dbms_logmnr.add_logfile(logfilename=>'D:\oracle\product\10.2.0\oradata\orcl\REDO01.LOG',options=>dbms_logmnr.addfile);

exec dbms_logmnr.add_logfile(logfilename=>'D:\oracle\product\10.2.0\oradata\orcl\REDO02.LOG',options=>dbms_logmnr.addfile);
-------移除不需要分析的日志文件
SQL>exec dbms_logmnr.add_logfile(logfilename=>'D:\oracle\product\10.2.0\oradata\orcl\REDO01.LOG',options=>dbms_logmnr.removefile);


8,使用logminer进行日志分析
SQL>exec dbms_logmnr.start_logmnr(dictfilename=>'d:\oracle\log\logmnr_dict.ora');
  pl/sql procedure successfullly completed


-----也可以根据时间条件分析
SQL> EXECUTE dbms_logmnr.start_logmnr(
DictFileName => 'd:\oracle\log\logmnr_dict.ora',
StartTime => to_date('2007-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS')
EndTime => to_date(''2007-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));



9,得到分析结果

select sql_redo from v$logmnr_contents where username = 'xxxx';


10,终止日志分析事务,释放内存

exec dbms_logmnr.end_logmnr;


ps: oracle 9i 之后,附加最小日志 supplemental_log_data_min  是默认没有打开的,所以在开始分析时会发现分析出的结果只有DDL记录,没有DML记录,
--启用操作执行
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA ;--启用一后会带来一定影响下篇日志中解释。

--禁用supplemental_log_data_min,
执行alter database drop supplemental log data;
--查看确认
SELECT name, supplemental_log_data_min FROM v$database;