创建数据字典的目的就是让LogMiner引用涉及到内部数据字典中的部分时为他们实际的名字,而不是系统内部的16进制。数据字典文件是一个文本文件,使用包DBMS_LOGMNR_D来创建。如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,这时就需要重新创建该字典文件。另外一种情况是在分析另外一个数据库文件的重作日志时,也必须要重新生成一遍被分析数据库的数据字典文件。
5、确认当前处理联机状态的redo日志
sys@ORCL>select group#,status from v$log;
GROUP# STATUS
---------- ------------------------------------------------
1 INACTIVE
2 CURRENT
3 INACTIVE
sys@ORCL>select group#,member from v$logfile;
GROUP# MEMBER
---------- ----------------------------------------------------------------------------------------------------
3 /u02/app/oracle/oradata/orcl/redo03.log
2 /u02/app/oracle/oradata/orcl/redo02.log
1 /u02/app/oracle/oradata/orcl/redo01.log
可以看出redo02处于current状态
6、加入需要分析的日志
--第一个日志文件使用dbms_logmnr.new
sys@ORCL>exec dbms_logmnr.add_logfile(LOGFILENAME=>'/u02/app/oracle/oradata/orcl/redo02.log',OPTIONS=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
--如果需要加入其他的日志使用如下语句
exec dbms_logmnr.add_logfile(LOGFILENAME=>'/u02/app/oracle/oradata/orcl/redo03.log',OPTIONS=>dbms_logmnr.addfile);
7、使用LogMiner进行分析
sys@ORCL>exec dbms_logmnr.start_logmnr(DICTFILENAME=>'/home/oracle/logminer/dictionary.ora');
PL/SQL procedure successfully completed.
sys@ORCL>col seg_name for a15
sys@ORCL>col seg_owner for a15
sys@ORCL>col operation for a20
sys@ORCL>col sql_redo for a180
sys@ORCL>set linesize 200
sys@ORCL>select seg_owner,seg_name,operation,sql_redo from v$logmnr_contents where seg_owner='ZX' and seg_name='LOG_MINER';
SEG_OWNER SEG_NAME OPERATION SQL_REDO
--------------- --------------- -------------------- --------------------------------------------------------------------------------
ZX LOG_MINER DDL create table log_miner (id number,name varchar2(10));
ZX LOG_MINER INSERT insert into "ZX"."LOG_MINER"("ID","NAME") values ('1','zx');
ZX LOG_MINER INSERT insert into "ZX"."LOG_MINER"("ID","NAME") values ('1','lx');
ZX LOG_MINER INSERT insert into "ZX"."LOG_MINER"("ID","NAME") values ('1','xx');
以上为分析在线redo日志的过程,分析归档日志的步骤同样,只是在添加日志文件的时候把在线redo日志换为归档日志即可。归档日志也可以传输到其他数据库服务器上进行数据分析,但分析时需要使用源库的字典文件。
LogMiner使用注意事项:
源库与Mining数据库必须运行在同样的硬件平台上,windows的不可以传到Linux上进行分析
Mining数据库的版本大于等于源库的数据库版本
Mining数据库的字符集需要与源库一致或是源库的超集