达梦数据库归档日志挖掘

总体思路:出现数据误删等操作,先记录下事务产生的大概时间;查看对应事务产生的归档信息,用此归档进行日志挖掘;创建并打开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 

<think>好的,用户想了解达梦数据库归档日志相关配置。首先,我需要回忆一下达梦数据库归档日志基本概念和作用。归档日志主要用于数据恢复和容灾,开启后可以保留完整的事务日志,这对数据库的安全非常重要。 接下来,我需要整理配置归档日志的步骤。通常,这涉及到修改数据库的dm.ini和dmarch.ini文件。要确认用户是否了解这些配置文件的位置和基本结构,可能需要分步骤说明如何修改参数,比如ARCH_INI、ARCH_TYPE等。 然后,需要考虑不同的归档类型,比如本地归档、实时归档、异步归档和远程归档。用户可能有不同的需求,比如是否需要实时同步到备用库,或者异步传输到其他服务器。需要分别解释每种类型的适用场景和配置方法,并提供示例,这样用户能更清楚如何选择。 另外,用户可能对如何验证配置是否生效有疑问,所以应该包含检查归档状态的方法,比如使用SQL语句查询V$ARCHIVED_LOG和V$DM_ARCH_INI视图。这部分需要确保语法正确,并且步骤清晰。 还要注意提醒用户在修改配置后需要重启数据库才能生效,这是一个常见的易错点。同时,安全方面的建议,比如归档日志的存储位置和定期清理,也是必要的,帮助用户避免磁盘空间问题。 用户可能的隐藏需求包括高可用性配置或者性能优化,比如实时归档与数据守护结合,或者调整归档文件的大小。虽然用户没有明确提到,但在回答中适当提及这些高级配置可以增加信息的全面性。 最后,要确保整个回答结构清晰,步骤详细,示例准确,并且符合用户的中文要求。避免使用复杂术语,保持语言简洁明了,让不同技术水平的用户都能理解。同时检查LaTeX格式是否正确,特别是行内公式和独立公式是否符合要求,但根据问题内容,可能LaTeX使用较少,主要集中在配置参数和路径的格式上,所以需要正确使用代码块或引用格式。</think>达梦数据库归档日志配置详解(以DM8为例): 一、归档日志的作用 1. 确保数据库完整恢复:记录所有已完成事务的REDO日志 2. 支持数据库级时间点恢复 3. 数据守护、主备集群等容灾方案的基础 二、配置步骤 1. 修改dm.ini参数 ```ini ARCH_INI = 1 # 启用归档配置 RLOG_APPEND_LOGIC = 0 # 逻辑日志强制归档(建议保持默认) ``` 2. 配置dmarch.ini(默认位于$DM_HOME/data/DAMENG/) ```ini [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL # 本地归档类型 ARCH_DEST = /dm8/arch # 归档路径(需提前创建目录) ARCH_FILE_SIZE = 1024 # 单个归档文件大小(单位MB) ARCH_SPACE_LIMIT = 0 # 空间限制(0表示不限制) ``` 3. 重启数据库生效 ```bash systemctl restart DmServiceDMSERVER ``` 三、归档类型详解 1. 本地归档(LOCAL) - 基本配置,必须启用 - 示例配置: ```ini ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ``` 2. 实时归档(REALTIME) - 用于读写分离集群 - 示例配置: ```ini ARCH_TYPE = REALTIME ARCH_DEST = SYSDBA/SYSDBA@192.168.1.100:5236 ``` 3. 异步归档(ASYNC) - 定时同步到备库 - 示例配置: ```ini ARCH_TYPE = ASYNC ARCH_DEST = SYSDBA/SYSDBA@192.168.1.101:5236 ARCH_TIMER = 60 # 同步间隔(秒) ``` 4. 远程归档(REMOTE) - 异机备份归档 - 示例配置: ```ini ARCH_TYPE = REMOTE ARCH_DEST = 192.168.1.102:5236 ARCH_INCOMING_PATH = /dm8/remote_arch ``` 四、状态验证 1. 检查归档状态 ```sql SELECT ARCH_NAME, ARCH_TYPE, ARCH_DEST, ARCH_FILE_SIZE FROM V$DM_ARCH_INI; ``` 2. 查看已生成归档 ```sql SELECT CLIENT_NAME, PATH, BEGIN_LSN, END_LSN FROM V$ARCHIVED_LOG; ``` 五、注意事项 1. 存储规划建议: - 建议单独挂载归档存储设备 - 保留空间应至少能存放3天以上的归档日志 - 文件系统建议使用XFS/ext4 2. 自动清理策略 ```ini ARCH_RESERVE_TIME = 1440 # 保留时间(分钟),0表示不自动删除 ``` 3. 性能优化参数 ```ini ARCH_SEND_BUF_SIZE = 16 # 发送缓冲区大小(单位MB) ARCH_RECV_BUF_SIZE = 16 # 接收缓冲区大小 ``` 六、常见问题处理 1. 归档空间满: ```sql ALTER DATABASE ARCHIVELOG CURRENT; # 手动切换归档 ``` 2. 归档不同步: ```sql ALTER DATABASE MOUNT; ALTER DATABASE ARCHIVELOG RESET; # 重置归档 ALTER DATABASE OPEN; ``` 建议定期检查归档完整性: ```bash dmrachk TYPE=ARCH FILE=/dmdata/arch/DAMENG_ARCH_LOCAL1_20230615.log ``` 附:最佳实践 1. 生产环境建议同时配置本地归档+远程归档 2. 归档目录权限应设置为700,属组dmdba:dinstall 3. 建议设置ARCH_FILE_SIZE=2048(2GB)平衡性能与恢复粒度 4. 结合crontab定期清理过期归档: ```bash 0 2 * * * find /dmdata/arch -name "*.log" -mtime +7 -exec rm {} \; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

咀个栗子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值