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:DMdataDAMENGDAMENG01.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:DMdataarchARCHIVE_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_ONLY(2):仅从已交的事务的日志中挖掘信息
DICT_FROM_ONLINE_CATALOG(16):使用在线字典
NO_SQL_DELIMITER(64):拼写的SQL语句最后不添加分隔符
NO_ROWID_IN_STMT(2048):拼写的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