达梦数据库归档日志挖掘

总体思路:出现数据误删等操作,先记录下事务产生的大概时间;查看对应事务产生的归档信息,用此归档进行日志挖掘;创建并打开DBMS_LOGMNR,将需要分析的时间段输入,就能查看这段时间所做的操作;

---------------------------------------------------------------------------------------------------------------------------------

目录

一、环境准备

1. 开启归档和开启附加日志

2.事务操作

3.查看对应归档文件产生的时间和路径信息

二、归档日志分析

1. 添加需要分析的归档


一、环境准备

1. 开启归档和开启附加日志

(1)开启归档:进入$DM_HOME/bin目录下

[dmdba@DM bin]$ ./disql SYSDBA/Dameng123:5238

        进入disql工具执行:

SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ADD ARCHIVELOG 'TYPE=LOCAL,DEST=/bak/archlog,FILE_SIZE=64,SPACE_LIMIT=1024';
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;

        查看归档信息:

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

(2)开启附加日志:

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

SQL> SP_SET_PARA_VALUE(1,'RLOG_APPEND_LOGIC',2);

2.事务操作

       进行一些增删改DML和DDL事务操作,以产生归档信息,并模拟表数据误删或数据库对象误删的操作;如:

SQL> CONN DB/qwerty123:5238
SQL> DELETE FROM QQ WHERE ID=11;
SQL> UPDATE QQ SET NUM=111111 WHERE ID=04;
SQL> COMMIT;
SQL> TRUNCATE TABLE QQ;
SQL> DROP TABLE QQ;
SQL> SELECT * FROM QQ;

出现数据误删情况,先记录下操作发生的大概时间:

SQL> select sysdate;

 

3.查看对应归档文件产生的时间和路径信息

SQL> select first_time,name from v$archived_log;

 

二、归档日志分析

1. 添加需要分析的归档

(1)创建系统包:

SQL> SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_LOGMNR');
-- 查看创建包信息:显示为1,即开启状态;
SQL> SELECT SF_CHECK_SYSTEM_PACKAGE('DBMS_LOGMNR');

(2)DBMS_LOGMNR分析日志:

SQL> DBMS_LOGMNR.ADD_LOGFILE('/bak/archlog/ARCHIVE_LOCAL1_0x43951B76[0]_2022-03-15_14-32-04.log');
SQL> DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2130,STARTTIME=>TO_DATE('2022-03-18 17:00:00','YYYY-MM-DD HH24:MI:SS'),ENDTIME=>TO_DATE('2022-03-18 18:40:00','YYYY-MM-DD HH24:MI:SS'));
SQL> SELECT * FROM V$LOGMNR_LOGS;
SQL> select start_timestamp,username,session_info,sql_redo from v$logmnr_contents;

DBMS_LOGMNR包的参数:

        STARTTIME分析时或者加载时的过滤条件,日志起始时间;

        ENDTIME分析时或者加载时的过滤条件,日志结束时间;

        OPTIONS提供如下表所列的可选模式:

OPTIONS可选模式

COMMITTED_DATA_ONLY

2

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

DICT_FROM_ONLINE_CATALOG

16

使用在线字典

NO_SQL_DELIMITER

64

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

NO_ROWID_IN_STMT

2048

拼写的 SQL 语句中不包含 ROWID

如:要选择OPTIONS的所有参数进行分析,OPTIONS=>(2+16+64+2048);

查看分析结果:

SQL> select START_TIMESTAMP,COMMIT_TIMESTAMP,TABLE_NAME,ROW_ID,USERNAME,SQL_REDO,REDO_VALUE,UNDO_VALUE from V$LOGMNR_CONTENTS;

SQL> set linesize 1000;
SQL> set pagesize 100;
SQL> SELECT SQL_REDO, TIMESTAMP FROM V$LOGMNR_CONTENTS WHERE TABLE_NAME IS NOT NULL;

SQL> DBMS_LOGMNR.END_LOGMNR();   -- 关闭归档日志分析;

 

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咀个栗子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值