DM数据库DBMS_LOGMNR使用方法

DBMS_LOGMNR是达梦数据库日志挖掘功能使用的系统包,它可以方便的对数据库归档日志进行挖掘,重构出 DDL、 DML和DCL 等操作,方便审计及跟踪数据库的操作,并通过获取的信息进行更深入的分析。

本文构建测试表和数据,介绍DBMS_LOGMNR分析归档日志的操作方法,进而获取数据库某一阶段相关操作语句。

DBMS_LOGMNR使用方法

目前 DBMS_LOGMNR 只支持对归档日志进行分析,在使用该方法之前,需要将数据库设置为归档模式,并将RLOG_APPEND_LOGIC选项置为 1 或 2。

使用包内的过程和函数之前,如果还未创建过系统包。请先调用系统过程创建系统包。默认安装达梦数据库后该包已自动创建。

SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_LOGMNR');

如下展示日志分析工具使用流程。

步骤1

配置环境

使用如下语句核对ARCH_INI和RLOG_APPEND_LOGIC参数是否正确设置,保证数据库已开启归档模式:

select para_name, para_value from v$dm_ini where para_name in ('ARCH_INI','RLOG_APPEND_LOGIC');

若显示参数为0,则需要按照如下步骤设置归档模式及修改参数。

(1)修改dm.ini 中的参数,如下:

ARCH_INI = 1

RLOG_APPEND_LOGIC = 1 #

(2)dmarch.ini 需要配置本地归档,举例如下:

[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参数说明如下:

DM数据库DBMS_LOGMNR使用方法_第1张图片

步骤2

模拟数据库操作

构建测试表和测试数据,模拟数据库操作。我们在dmhr用户下创建t_test表,并插入表数据,使用一条update语句更新数据。SQL语句参考如下:​​​​​​​

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;

操作完成后,执行如下命令切换归档日志:

alter system archive log current;

归档切换后,执行如下命令创建表空间testtbs,用户testuser,并赋予testuser用户查询t_test表权限。​​​​​​​

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;

操作完成后,执行如下命令切换归档日志:

alter system archive log current;

上述操作中执行了两次日志归档,故操作分布在两个归档日志文件中。

步骤3

添加归档日志文件

(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;

序列号最大的是最新的归档日志,查询截图样例如下:

DM数据库DBMS_LOGMNR使用方法_第2张图片

(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, filename from v$logmnr_logs;

步骤4

启动归档日志文件分析

执行ADD_LOGFILE添加日志文件后,需要调用START_LOGMNR过程启动归档日志分析,在调用时可指定START_SCN, END_SCN, START_DATE, END_DATE, OPTIONS等参数。

时间参数值可根据V$LOGMNR_LOGS中LOW_TIME和HIGH_TIME或者实际业务场景指定范围;SCN可参考V$LOGMNR_LOGS视图中LOW_SCN和NEXT_SCN来指定。

OPTIONS参数参考如下表所列的可选模式,各模式可以通过 + 或者按位或来进行组合。其它位的值如 1、4、8 等目前不支持,配置后不会报错,但是没有效果。例如,组合全部模式,则取值2+16+64+2048=2130,那么 OPTIONS 值就是 2130。

DM数据库DBMS_LOGMNR使用方法_第3张图片

一个会话上仅能START一个LOGMNR,即只能执行一次START_LOGMNR,若要重新START需要执行终止操作,见步骤6。这里以不指定时间范围和SCN范围为例,启动所有添加的归档日志文件的分析,语句参考如下(OPTIONS=2066是2+16+2048的组合):

DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2066);

执行该语句后,可以通过查询V$LOGMNR_PARAMETERS获取当前会话启动日志文件分析的参数,上述执行START_LOGMNR时只指定了OPTIONS值,未指定其他参数,所以其他参数均保持默认值。查询结果如下:

步骤5

查看归档日志文件分析结果

执行START_LOGMNR后,可以通过动态视图V$LOGMNR_CONTENTS查看归档日志文件的分析结果,语句参考如下:​​​​​​​

SELECT OPERATION_CODE , OPERATION, SCN, SQL_REDO, TIMESTAMP ,SEG_OWNER, TABLE_NAME FROM V$LOGMNR_CONTENTS WHERE TABLE_NAME is not null;

查询结果展示如下图,从SQL_REDO字段中可以看出包含了我们步骤2中执行的所有操作。

DM数据库DBMS_LOGMNR使用方法_第4张图片

步骤6

终止归档日志文件分析

归档日志分析完毕后,执行如下语句结束归档日志分析。

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系统包使用手册。

日志挖掘常用动态性能视图

前面已经讲解了日志挖掘的使用场景和方法,这里把常用动态性能视图列举出来供参考。

1

V$LOGMNR _CONTENTS

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

DM数据库DBMS_LOGMNR使用方法_第5张图片

DM数据库DBMS_LOGMNR使用方法_第6张图片

2

V$LOGMNR _LOGS

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

DM数据库DBMS_LOGMNR使用方法_第7张图片

3

V$LOGMNR _PARAMETERS

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

DM数据库DBMS_LOGMNR使用方法_第8张图片

你可能感兴趣的:(达梦数据库,数据库,达梦)