达梦日志挖掘

0、摘要

  达梦数据库提供DBMS_LOGMNR系统包用于对归档日志进行挖掘,从而获取某一时间段内的DDL和DML等操作,用于进一步进行错误数据修正以及复杂问题深入分析。需要注意的是,DBMS_LOGMNR只支持归档日志进行分析,而且需要将RLOG_APPEND_LOGIC选项置为1或2。达梦MPP环境下不支持使用DBMS_LOGMNR包。

1. 挖掘条件

针对达梦数据库需要日志挖掘必须满足如下条件,且只能针对归档日志做挖掘。

1、开启归档

      select SF_GET_PARA_VALUE(1,'arch_ini');

      SP_SET_PARA_VALUE(2,'arch_ini',1);   --静态参数,修改后需要重启数据库

2、开启附加日志

      select SF_GET_PARA_VALUE(1,'RLOG_APPEND_LOGIC');

      SP_SET_PARA_VALUE(2,'RLOG_APPEND_LOGIC',1);   --静态参数,修改后需要重启数据库

3、测试对在线日志做挖掘:

dbms_logmnr.add_logfile('E:\DM\data\DAMENG\DAMENG01.log');

 

 

 

 

2. 挖掘步骤

1、检查是否开启归档和附加日志

   select SF_GET_PARA_VALUE(1,'arch_ini');

   select SF_GET_PARA_VALUE(1,'RLOG_APPEND_LOGIC');

2、步骤

--根据需求定位到需要做日志分析的归档日志文件

--添加归档日志

dbms_logmnr.add_logfile('E:\DM\data\arch\ARCHIVE_LOCAL1_0x6B6167C6[0]_2021-08-17_14-59-15.log');

--查询已添加的分析日志

select * from v$logmnr_logs;

--开始日志挖掘

DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2048 );

select scn,START_SCN,commit_scn,timestamp,start_timestamp,COMMIT_TIMESTAMP,operation,sql_redo from V$logmnr_contents;

 

 

DBMS_LOGMNR.START_LOGMNR存在过程的options选项:

COMMITTED_DATA_ONLY2):仅从已交的事务的日志中挖掘信息

DICT_FROM_ONLINE_CATALOG16):使用在线字典

NO_SQL_DELIMITER64):拼写的SQL语句最后不添加分隔符

NO_ROWID_IN_STMT2048):拼写的SQL语句中不包含ROWID

Options取值为各个选项值的组合求和。

3. 挖掘数据分析

3.1. 修改

3.1.1. 无主键表

DBMS_LOGMNR.START_LOGMNR(OPTIONS=>16 );--使用在线字典对日志进行分析

 

 

 无主键的表,过滤条件是包括所有的列。

3.1.2. 有主键表

DBMS_LOGMNR.START_LOGMNR(OPTIONS=>16 );--使用在线字典对日志进行分析

 

 

 有主键的表,过滤条件只包括主键列。修改主键也同理。 

3.2. 插入

 

 

 

3.3. 删除

 

 

 3.4. 结论

查询挖掘信息表:

select sql_redo,scn,START_SCN,commit_scn,timestamp,start_timestamp,COMMIT_TIMESTAMP,operation from V$logmnr_contents; 

通过挖掘信息表可以清楚了解执行了哪些SQL和执行时间,但是无法通过日志挖掘找回修改、删除前的值。 

4. 结束挖掘

 --停止日志挖掘

 DBMS_LOGMNR.END_LOGMNR();

 

更多资讯请上达梦技术社区了解: https://eco.dameng.com

24小时免费服务热线:400 991 6599

 

posted @ 2021-08-22 22:00  last_0ne  阅读(462)  评论(0编辑  收藏  举报