达梦DBMS_LOGMNR归档数据挖掘

一、达梦归档日志挖掘

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

二、DBMS_LOGMNR使用方法

目前 DBMS_LOGMNR 只支持对归档日志进行分析,在使用该方法之前,需要将数据库配置文件dm.ini的归档模式和附加日志功能开启,即:

ARCH_INI=1

RLOG_APPEND_LOGIC=1

需要注意的是:

  1. MPP 环境下不支持 DBMS_LOGMNR 包。
  2. 日志挖掘是会话级别的分析过程,只能在当前会话生效。

使用包内的过程和函数之前,如果还未创建过系统包,请先调用系统过程创建系统包,执行命令如下:

SP_CREATE_SYSTEM_PACKAGES (1,‘DBMS_LOGMNR’);

默认安装达梦数据库后该包已自动创建。

三、日志挖掘相关方法:

3.1 ADD_LOGFILE

        增加需要分析的归档日志文件

3.2 COLUMN_PRESENT

        判断某列是否被包含在指定的一行逻辑记录中。

3.3 END_LOGMNR

        结束LOGMNR日志分析挖掘

3.4 MINE_VALUE

        以字符串的格式来获取某一条日志中包含的指定列的值。

3.5 REMOVE_LOGFILE

        从日志列表中移除某个日志文件。

3.6 START_LOGMNR

        根据指定的模式和条件来开始某个会话上的 LOGMNR,一个会话上仅能 START 一个 LOGMNR。

四、日志分析工具使用示例:

4.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 = /home/dmdba/dmarch

ARCH_FILE_SIZE = 256 #单位Mb

ARCH_SPACE_LIMIT = 204800 #单位Mb,0 表示无限制,范围1024~4294967294M

ARCH_INI和RLOG_APPEND_LOGIC参数说明如下:

4.2 模拟数据库操作

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

DROP TABLE IF EXISTS TEST;

CREATE TABLE TEST AS SELECT * FROM DBA_OBJECTS;

INSERT INTO TEST SELECT * FROM TEST;

COMMIT;

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

ALTER SYSTEM ARCHIVE LOG CURRENT;

4.3 调用系统过程创建系统包

SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_LOGMNR');

4.4 添加归档日志文件

(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('/home/dmdba/dmarch/ARCHIVE_LOCAL1_0x1E8965DC_EP0_2022-06-23_19-46-49.log');  

可以通过动态视图V$LOGMNR_LOGS查询 ADD_LOGFILE 添加的归档日志文件信息,查询结果如下:

SELECT LOW_SCN, NEXT_SCN, LOW_TIME, HIGH_TIME, LOG_ID, FILENAME FROM V$LOGMNR_LOGS;

4.5 启动归档日志文件分析

执行ADD_LOGFILE添加日志文件后,需要调用START_LOGMNR过程启动归档日志分析。

根据需求,可指定分析的时间段:

DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128 , STARTTIME=>TO_DATE('2022-06-22 17:00:00','YYYY-MM-DD HH24:MI:SS') , ENDTIME=>TO_DATE('2022-06-23 20:00:02','YYYY-MM-DD HH24:MI:SS'));

或者不指定查询时间和SCN:

DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128);

说明:

在调用时可指定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。

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

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

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

执行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中执行的所有操作。

4.7 终止归档日志文件分析

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

DBMS_LOGMNR.END_LOGMNR();

执行该语句后查询V$LOGMNR_LOGS和V$LOGMNR_PARAMETERS将不会有数据,此时查询V$LOGMNR_CONTENTS也会报错。此3个动态性能视图都是会话级别,其他会话无法查询该视图数据。

到此一个完整的日志挖掘分析步骤已完成。

若在第3步添加文件ADD_LOGFILE之后,想移除对该文件的分析,在执行START_LOGMNR之前,可执行REMOVE_LOGFILE删除此文件;若已经执行了START_LOGMNR,则需执行END_LOGMNR结束本次分析才能开启下一次分析操作。

执行该语句后查询V$LOGMNR_LOGS和V$LOGMNR_PARAMETERS将不会有数据,此时查询V$LOGMNR_CONTENTS也会报错。此3个动态性能视图都是会话级别,其他会话无法查询该视图数据。

DBMS_LOGMNR包还提供其他过程或函数,详情可参考《DM8系统包使用手册》。

更多内容,请访问达梦社区地址:https:eco.dameng.com

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值