根据时间确定需要挖据日志的个数,将日志分别加入脚本中。
2、 编写logminer脚本
execute dbms_logmnr.add_logfile(logfilename=>'/home/Oracle/admin/ORCL/archive/ORCL_1_670176536_22124.dbf',options=>);
execute dbms_logmnr.add_logfile(logfilename=>'/home/oracle/admin/ORCL/archive/ORCL_1_670176536_22122.dbf',options=>);
execute dbms_logmnr.add_logfile(logfilename=>'/home/oracle/admin/ORCL/archive/ORCL_1_670176536_22118.dbf',options=>);
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视图中查询信息;