达梦日志挖掘简单使用

     

   环境检查

检查是否创建了系统包

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

SP_CREATE_SYSTEM_PACKAGES(1);

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

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

注:RLOG_APPEND_LOGIC 需要设置为1 2

1 代表如果有主键列,记录 UPDATE DELETE 操作时只包含主键列信息, 若没有主键列则包含所有列信息;

2 代表不论是否有主键列,记录 UPDATE DELETE 操作时都包含所有列的信息。

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

l   修改 dm.ini 中的参数

ARCH_INI = 1

RLOG_APPEND_LOGIC = 1

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

l   dmarch.ini 配置本地归档

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /data/dmarch

ARCH_FILE_SIZE = 2048

ARCH_SPACE_LIMIT = 0

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

查看源库的db_magic

   select db_magic; --954337092

案例模拟

   删除一个用户的所有数据,然后通过日志挖掘查看到删除的操作。

drop user test1 CASCADE;

   可以查询此时的操作,记录在了一个归档日志文件里面,如:ARCHIVE_LOCAL1_20200316112054696_0.log

异机进行日志挖掘

3.1     新初始化一个实例

   初始化完成后,修改db_magic

3.2     修改该实例db_magic 为归档源库的db_magic

   使用dmmdf 修改 SYSTEM.DBF DAMENG01.log DAMENG02.log dbmagic 为归档源库的db_magic 。本例归档源库的db_magic 是:954337092

cd /home/dmdba/dmdbms/bin

./dmmdf TYPE=1 FILE=/data/DAMENG/SYSTEM.DBF

./dmmdf TYPE=2 FILE=/data/DAMENG/DAMENG01.log

./dmmdf TYPE=2 FILE=/data/DAMENG/DAMENG02.log

修改完启动数据库服务。

3.3     开始日志挖掘

3.3.1    添加归档日志文件

Ø   从源库拷贝归档文件

Ø   添加归档日志文件

DBMS_LOGMNR.ADD_LOGFILE('/data/ARCHIVE_LOCAL1_20200316112054696_0.log');

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

查询V$LOGMNR_LOGS 动态视图

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

3.3.2    启动归档日志文件分析

DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2048);

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

   如要查看归档日志文件的分析结果,可以通过动态视图 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

where table_name='XXX';

注:可以根据需要指定追踪信息,如表名、用户名、时间段等, 在数据库中执行的操作会被解析为单行元组的SQL 操作,即在数据库中执行一条update XX set name=xx where id<100; 则在日志分析结果中会解析为一条条单行元组的SQL 操作,如update XX set name=xx where id=1 ;、update table_name set name=xx where id=2 ;等所有id 小于100 SQL 操作。

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

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

3.3.4    终止归档日志文件分析

DBMS_LOGMNR.END_LOGMNR();

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

 

 

 

 


请使用浏览器的分享功能分享到微信等