

DBMS_LOGMNR使用方法

select para_name, para_valuefrom v$dm_iniwhere para_name in ('ARCH_INI','RLOG_APPEND_LOGIC');
ARCH_INI = 1
RLOG_APPEND_LOGIC = 1 #
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = d:\dmdbms\arch
ARCH_FILE_SIZE = 128 #单位Mb
ARCH_SPACE_LIMIT = 0 #单位Mb,0 表示无限制,范围1024~4294967294M
ARCH_INI和RLOG_APPEND_LOGIC参数说明如下:

create table dmhr.t_test (id int,name varchar(50)) tablespace dmhr;insert into dmhr.t_test values(1,'liming');insert into dmhr.t_test values(2,'dameng');insert into dmhr.t_test values(3,'test');insert into dmhr.t_test values(4,'hanmeimei');insert into dmhr.t_test values(5,'daiwei');insert into dmhr.t_test values(6,'jack');update dmhr.t_test set id = id + 10 where id <10;commit;
create tablespace testtbs datafile 'D:\dmdbms\data\DAMENG\TESTTBS.DBF' size 500;create user testuser identified by dameng123 default tablespace testtbs;grant select on dmhr.t_test to testuser;
(1) 从v$archived_log中查询归档日志文件,参考如下命令:
select sequence# seq, name , to_char(first_time,'yyyy-mm-dd hh24:mi:ss') first_time, to_char(next_time,'yyyy-mm-dd hh24:mi:ss') next_time, first_change# , next_change#from v$archived_log;
序列号最大的是最新的归档日志,查询截图样例如下:

(2) 添加一个或多个需要分析的归档日志文件。
本章前面构造的测试数据在两个最新的归档日志中,所以此时添加最新的两个归档日志进行分析。
DBMS_LOGMNR.ADD_LOGFILE('D:\dmdbms\arch\ARCHIVE_LOCAL1_0x62608140[0]_2020-03-18_10-31-11.log');DBMS_LOGMNR.ADD_LOGFILE('D:\dmdbms\arch\ARCHIVE_LOCAL1_0x62608140[0]_2020-03-18_10-32-11.log');
可以通过动态视图V$LOGMNR_LOGS查询 ADD_LOGFILE 添加的归档日志文件信息,查询结果如下:
select low_scn, next_scn, low_time, high_time, log_id, filenamefrom v$logmnr_logs;


DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2066);

执行START_LOGMNR后,可以通过动态视图V$LOGMNR_CONTENTS查看归档日志文件的分析结果,语句参考如下:
SELECT OPERATION_CODE , OPERATION, SCN, SQL_REDO, TIMESTAMP ,SEG_OWNER, TABLE_NAMEFROM V$LOGMNR_CONTENTSWHERE TABLE_NAME is not null;
查询结果展示如下图,从SQL_REDO字段中可以看出包含了我们步骤2中执行的所有操作。

归档日志分析完毕后,执行如下语句结束归档日志分析。
DBMS_LOGMNR.END_LOGMNR();
执行该语句后查询V$LOGMNR_LOGS和V$LOGMNR_PARAMETERS将不会有数据,此时查询V$LOGMNR_CONTENTS也会报错。此3个动态性能视图都是会话级别,其他会话无法查询该视图数据。
到此一个完整的日志挖掘分析步骤已完成,如果要重新启动归档日志的分析,需要执行此步骤后,重新执行3-6步操作。若在第3步添加文件ADD_LOGFILE之后,想移除对该文件的分析,在执行START_LOGMNR之前,可执行REMOVE_LOGFILE删除此文件;若已经执行了START_LOGMNR,则需执行END_LOGMNR结束本次分析才能开启下一次分析操作。
DBMS_LOGMNR包还提供其他过程或函数,详情可参考DM8系统包使用手册。


前面已经讲解了日志挖掘的使用场景和方法,这里把常用动态性能视图列举出来供参考。
V$LOGMNR_CONTENTS显示当前会话日志分析的内容。此动态视图与 Oracle 兼容,下表中未列出的列 DM 暂不支持,查询时均显示 NULL。


V$LOGMNR_LOGS显示当前会话添加的需要分析的归档日志文件。此动态视图与 Oracle 兼容,下表中未列出的列 DM 暂不支持,查询时均显示 NULL。

V$LOGMNR_PARAMETERS显示当前会话 START_LOGMNR 启动日志文件分析的参数。此动态视图与 Oracle 兼容,下表中未列出的列 DM 暂不支持,查询时均显示 NULL。

好了,本次分享到此结束,感谢大家。DBMS_LOGMNR包用于业务定位误操作简单而快捷,可辅助维优人员定位问题,希望能给大家带来帮助。







