暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【干货分享】DM数据库DBMS_LOGMNR使用方法

达梦大数据 2020-03-20
852


DBMS_LOGMNR是达梦数据库日志挖掘功能使用的系统包,它可以方便的对数据库归档日志进行挖掘,重构出 DDL、 DML和DCL 等操作,方便审计及跟踪数据库的操作,并通过获取的信息进行更深入的分析。
本章构建测试表和数据,介绍DBMS_LOGMNR分析归档日志的操作方法,进而获取数据库某一阶段相关操作语句。
本章的测试环境:
操作系统: WINDOWS XP 32位
数据库版本:达梦8.1
相关关键字:日志挖掘,DM,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表示无限制,范围1024~4294967294M

    ARCH_INI和RLOG_APPEND_LOGIC参数说明如下:




    步骤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;

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

           






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


              一个会话上仅能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中执行的所有操作。







                  步骤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。





                  2
                  V$LOGMNR _LOGS

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



                  3
                  V$LOGMNR _PARAMETERS

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



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


                  ◆ 【干货分享】DM数据库开启归档模式的三种方式
                  ◆ 【干货分享】DM数据库varchar类型长度解析
                  ◆ 【干货分享】疫情当前,DM如何帮你定期自动清理备份文件

                  文章转载自达梦大数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论