甲骨文认证体系
Vmware认证体系
AWS亚马逊
阿里云认证体系
红帽认证体系
ZStack云计算认证体系
思科认证体系
华为认证体系
CDA数据分析师认证
达梦认证体系
麒麟
定制化课程
达梦数据库培训干货分享DM7上的日志挖掘
发布日期:2020-08-27 09:44:37阅读次数:

一、适用场景


相信许多DBA同学都碰到过这样的情况,由于各种原因需要对数据库进行不完全的恢复,但又不确定应该恢复到哪个时间点或者SCN。在DM7中,用户可以使用DBMS_LOGMNR包对归档日志进行挖掘,重构出DDL和DML等操作,并通过获取的信息进行更深入的分析;同样,可以对归档日志文件进行恢复被误操作的数据,并进行故障跟踪,定位执行误操作的用户信息。目前DBMS_LOGMNR只支持归档日志进行分析,配置归档后,还需要将dm.ini中的RLOG_APPEND_LOGIC选项配置为1或2。

 

注:需要在产生归档日志的数据库上进行分析,利用备份文件还原的测试库上无法进行日志挖掘,因为当数据库经过备份还原并恢复后,DB_MAGIC就会发生改变,在还原库上进行日志分析时会报“[DBMS_LOGMNR.START_LOGMNR] 归档日志MAGIC错误”错误。

 

二、环境检查

 

注:本文实验环境的DM7数据库版本为:

DM Database Server x64 V7.1.6.33-Build(2017.12.11-87269)ENT 


1、检查是否创建了系统包

如未创建,可以执行如下命令:

SP_CREATE_SYSTEM_PACKAGES(1);

 

2、检查是否开启了归档和追加日志

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

 

注:RLOG_APPEND_LOGIC需要设置为1或2,1代表如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息;2代表不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息。

 

如果未开启归档和追加日志,可以参照如下进行设置:

­1­修改dm.ini中的参数

ARCH_INI =1

RLOG_APPEND_LOGIC=1

 

注:静态参数,需要重启数据库后生效


­2­dmarch.ini 配置本地归档 

[ARCHIVE_LOCAL1]

ARCH_TYPE=LOCAL

ARCH_DEST =d:\dm7data\arch 

ARCH_FILE_SIZE =128

ARCH_SPACE_LIMIT =0

 

注:归档文件配置完毕后,需要重启数据库后生效

 

三、开始日志挖掘


3.1、添加归档日志文件


3.1.1、查询数据库当前有哪些归档日志


SELECT NAME ,FIRST_TIME , NEXT_TIME , FIRST_CHANGE# , NEXT_CHANGE# FROMV$ARCHIVED_LOG;

 

3.1.2、添加一个或多个需要分析的归档日志文件


DBMS_LOGMNR.ADD_LOGFILE('/dmdb/xxx/xxx/xxx/ARCHIVE_LOCAL1_20171214120114980.log');


注:对于不在数据库默认归档路径下的归档日志,可以直接指定归档日志的绝对路径添 加进分析列表。


3.1.3、查询通过ADD_LOGFILE添加的归档日志文件


可以查询V$LOGMNR_LOGS动态视图进行插入,如下:

SELECT LOW_SCN,NEXT_SCN, LOW_TIME, HIGH_TIME, LOG_ID, FILENAME FROMV$LOGMNR_LOGS;


3.2、启动归档日志文件分析


DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128, STARTTIME=>TO_DATE('2018‐1‐2412:01:12','YYYY‐MM‐DD HH24:MI:SS') , ENDTIME=>TO_DATE('2018‐01‐2404:20:03','YYYY‐MM‐DDHH24:MI:SS'));

 

注:可以指定日志文件分析的时间段或SCN范围,同样可以指定Options的功能组合,如 下:


Options:提供如下的可选模式,各模式可以通过 + 或者按位或来进行组合。其它位的值如1、4、8等目前不支持,配置后不会报错,但是没有效果。                                       

               

Options      对应值   说明
COMMITTED_DATA_ONLY  2  仅从已交的事务的日志中挖掘信息

DICT_FROM_ONLINE_CATALOG

16

使用在线字典

NO_SQL_DELIMITER

64

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

NO_ROWID_IN_STMT

2048

拼写的 SQL 语句中不包含ROWID

 

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


如要查看归档日志文件的分析结果,可以通过动态视图V$LOGMNR_CONTENTS进行 查询,如下:

 

select TIMESTAMP ,START_TIMESTAMP ,COMMIT_TIMESTAMP ,OPERATION ,OPERATION_CODE ,ROLL_BACK ,TABLE_NAME ,ROW_ID ,USERNAME ,DATA_OBJ# , DATA_OBJV# , SQL_REDO, REDO_VALUE, UNDO_VALUE

from V$LOGMNR_CONTENTS wheretable_name= 'XXX';

 

注:可以根据需要指定追踪信息,如表名、用户名、时间段等,在数据库中执行的操作会 被解析为单行元组的SQL操作,即在数据库中执行一条updateXXsetname=xxwhere id<100;则在日志分析结果中会解析为一条条单行元组的SQL操作,如update  XXset

name=xxwhereid=1;updatetable_namesetname=xxwhereid=2;等所有id小于100的SQL操作。


OPERATION字段代表操作类型,主要包括start、insert、update、delete、commit、 rollback等语句


OPERATION_CODE代表操作类型代码,1表示插入操作, 2表示删除操作,3表示更新操 作,6表示事务起始语句,7表示提交操作,9表示批量更新,36表示回滚操作。

 

3.3、终止归档日志文件分析

DBMS_LOGMNR.END_LOGMNR();


注:进行日志挖掘过程中,在V$LOGMNR_LOGS、V$LOGMNR_CONTENTS等数据库动态性能视图上会产生分析数据,数据存储在TEMP临时表空间上,会话断开或终止归档日志文件分析后,数据会被清除。

 

看到这里,相信大家对DBMS_LOGMNR的基本用法有了一定的了解,如果大家想对日志挖掘进行进一步的学习,可以查看《DM7系统包使用手册》的第七章 DBMS_LOGMNR包。


上海腾科教育科技有限公司聚焦ICT人才培养和教育服务、培养数字化时代的新型ICT人才、促进良性的ICT人才生态发展,提供面授教育、在线教育、IT人才培养与就业、高校专业共建与实验室建设、企业人才定制培养,以及教育科技领域内的技术开发、咨询、服务以及解决方案,专注高校ICT课程课件研发、基于华为公有云的云实验实训平台建设,致力于ICT技术在高等院校的引进、开发和推广,是一家全国性的专业ICT行业技术认证服务公司。

腾科教育是华为授权的培训合作伙伴,专业提供华为ICT技术架构认证、平台与服务认证、行业服务认证等华为职业认证服务,连续多年荣获华为年度最佳合作伙伴贡献奖、华为优秀战略合作伙伴、上海HCIE精英俱乐部伙伴,连续多年举办腾科技术嘉年华华为专场,并协办华为ICT大赛、华为生态伙伴精英赛伙伴赛分赛场、华为人才双选会上海场等活动和赛事,提供面向华为生态合作伙伴和ICT学员的人才供需双选平台及ICT学员就业通道,培养ICT行业所需创新型、融合型人才。