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;