使用LOGMNR工具挖掘日志地简要过程

使用LOGMNR工具挖掘日志地简要过程:

(1)登陆主机,以SYS用户登陆至数据库:

sqlplus "/as sysdba"

(2)执行添加supplemental log data命令:

alter database add Supplemental log data;

(3)将字典信息记录到ORACLE在线日志文件中:

EXECUTE dbms_logmnr_d.build (options => dbms_logmnr_d.store_in_redo_logs);

(4)将需要挖掘的归档日志文件添加至挖掘列表中,根据需要可能需要添加多个归档日志:

exec DBMS_LOGMNR.ADD_LOGFILE(LogFileName=>'/arch/ARC00001_0697199331.001');

(5)开启logmnr:

exec DBMS_LOGMNR.start_logmnr(Options => DBMS_LOGMNR.DICT_FROM_REDO_LOGS);

(6)查看是否挖掘内容:

select sql_redo from v$logmnr_contents;

如果其他会话查询v$logmnr_contents可能会出现如下错误:

SQL> select count(*) from v$logmnr_contents;

select count(*) from v$logmnr_contents

                     *

ERROR at line 1:

ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from

v$logmnr_contents

而且当挖掘内容过多时,查询v$logmnr_contents可能会速度过慢,我们可以在其他用户下将v$logmnr_contents内容创建到实体表格中,并根据查询字段创建索引。注意不要将表格创建到sys用户下,容易导致system表空间过大:

create table lgmrt.logmnr_contents_20121123 as select * from v$logmnr_contents;

(8)结束LOGMNR后,注意要再次查询,必须重新开始执行上述存储过程

exec DBMS_LOGMNR.end_logmnr;

(9)在执行DBMS_LOGMNR.start_logmnr可能会遇到如下错误。其解决办法是需要将执行添加supplemental log data命令时所对应的归档日志或在线日志添加进挖掘列表中:

SQL> exec DBMS_LOGMNR.start_logmnr(Options => DBMS_LOGMNR.DICT_FROM_REDO_LOGS);

BEGIN DBMS_LOGMNR.start_logmnr(Options => DBMS_LOGMNR.DICT_FROM_REDO_LOGS); END;


*

ERROR at line 1:

ORA-01371: Complete LogMiner dictionary not found

ORA-06512: at "SYS.DBMS_LOGMNR", line 58

ORA-06512: at line 1


请使用浏览器的分享功能分享到微信等