Logminer日志挖掘范例


1、 明确时间范围

根据时间确定需要挖据日志的个数,将日志分别加入脚本中。

 

2、 编写logminer脚本

execute dbms_logmnr.add_logfile(logfilename=>'/home/Oracle/admin/ORCL/archive/ORCL_1_670176536_22124.dbf',options=>dbms_logmnr.new);

execute dbms_logmnr.add_logfile(logfilename=>'/home/oracle/admin/ORCL/archive/ORCL_1_670176536_22122.dbf',options=>dbms_logmnr.addfile);

execute dbms_logmnr.add_logfile(logfilename=>'/home/oracle/admin/ORCL/archive/ORCL_1_670176536_22118.dbf',options=>dbms_logmnr.addfile);

 

 

3、 执行脚本

SQL复制到SQL*PLUS中运行,通过alert日志可以查看日志的挖掘进度。

EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

每查看一次V$LOGMNR_CONTENTS,dbms_logmnr包都会去挖掘一次归档文件,所以最好复制一份此表;

4、 创建临时表

Logminer执行分析完毕后,会将挖掘的信息保存在视图V$LOGMNR_CONTENTS,如果session退出,视图内相应数据将会清除。因此,为了方便查

询,可以通过创建临时表将视图中的数据保存:

Create table lonmnr_tmp as select * from V$LOGMNR_CONTENTS;

 

 

5、 查询目标SQL

根据查询条件,可以确定目标SQL是否存在:

select username, operation, SQL_REDO,SQL_UNDO FROM lonmnr_tmp where SEG_OWNER = 'SCOTT';

 

在V$LOGMNR_CONTENTS中username有时候会显示“UNKNOWN”状态,说明是其他语句调用的关系,可以根据session#和serial#去ash

或者DBA_HIST_SESSION_HISTORY视图中查询信息;

相关内容