1.创建数据字典
CREATE DIRECTORY utlfile AS '/oradata/LOGMNR';
2.创建字典文件需要以DBA用户登录,创建到上面配置好的LogMiner文件夹中
EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/oradata/LOGMNR');
3.添加分析的日志文件
注:Oracle的LogMiner可以分析在线(online)和归档(offline)两种日志文件,加入分析日志文件使用dbms_logmnr.add_logfile过程,第一个文件使用dbms_logmnr.NEW参数,后面文件使用dbms_logmnr.ADDFILE参数。
#创建列表
EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_9760_975192219.arc',options=>dbms_logmnr.NEW);
#在列表中添加日志文件
EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_9761_975192219.arc',options=>dbms_logmnr.ADDFILE);
EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_9762_975192219.arc',options=>dbms_logmnr.ADDFILE);
EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/1_9763_975192219.arc',options=>dbms_logmnr.ADDFILE);
4.使用logmnr进行日志分析
无条件分析
EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oradata\practice\LOGMNR\dictionary.ora');
有条件分析
execute dbms_logmnr.start_logmnr(startTime=>to_date('20180730150000','yyyy-mm-ddhh24:mi:ss'),endTime=>to_date('20180730153000','yyyy-mm-ddhh24:mi:ss'),DictFileName=>'/oradata/LOGMNR/dictionary.ora');
通过对过程DBMS_ LOGMNR.START_LOGMNR中几个不同参数的设置(参数含义见表1),可以缩小要分析日志文件的范围。通过设置起始时间和终止时间参数我们可以限制只分析某一时间范围的日志。
参数 | 参数类型 | 默认值 | 含义 |
StartScn | 数字型 | 0 | 分析重作日志中SCN≥StartScn日志文件部分 |
EndScn | 数字型 | 0 | 分析重作日志中SCN≤EndScn日志文件部分 |
StartTime | 日期型 | 1998-01-01 | 分析重作日志中时间戳≥StartTime的日志文件部分 |
EndTime | 日期型 | 2988-01-01 | 分析重作日志中时间戳≤EndTime的日志文件部分 |
DictFileName | 字符型 |
| 字典文件该文件包含一个数据库目录的快照。 |
5.观察分析结果(v$logmnr_contents)
select TIMESTAMP,START_TIMESTAMP,COMMIT_TIMESTAMP,OPERATION,SEG_NAME,SQL_REDO,USERNAME,OS_USERNAME,MACHINE_NAME from v$logmnr_contents where seg_name='BMS_SK_IO_DOC';
v$logmnr_contents说明
https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_1154.htm#REFRN30132