注册
DM8通过归档日志挖掘分析归档激增原因
技术分享/ 文章详情 /

DM8通过归档日志挖掘分析归档激增原因

一五八六七 2026/03/27 214 0 0

1、问题现象

某系统1月30日13:31后归档量爆发式增长,从每日50G左右增长至每小时170G,IO负载由8%左右增长至90%以上,1月31日凌晨2点数据库备份任务启动,进一步拉高IO负载,致使存储IO达到性能瓶颈

2、问题分析

通过日志挖掘分析引起归档激增的原因

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

select para_name,para_value from v$dm_ini where para_name in (‘ARCH_INI’,‘RLOG_APPEND_LOGIC’);
image.png
注:RLOG_APPEND_LOGIC 需要设置为 1 或 2;1 代表如果有主键列,记录 UPDATE 和 DELETE 操作时只包含主键列信息,若没有主键列则包含所有列信息;2 代表不论是否有主键列,记录 UPDATE 和 DELETE 操作时都包含所有列的信息。

2.2 归档日志挖掘

注意事项:
不建议在生产环境直接进行归档日志分析,建议拷贝到测试环境进行操作;
测试库需要开启归档日志功能。

2.2.1 拷贝归档到测试环境

image.png

2.2.2 查看测试环境数据库的db_magic

select permanent_magic,db_magic;
image.png

2.2.3 修改待分析归档日志的db_magic为测试环境数据库的db_magic的值

执行以下命令,通过dmmdf工具修改归档日志的db_magic
./dmmdf TYPE=2 FILE=/dbarch/dmarch/ARCHIVE_LOCAL1_0x2EACED66_EP0_2026-03-19_14-13-40.log
image.png

2.2.4 开始日志挖掘

(1) 创建系统包。
SP_CREATE_SYSTEM_PACKAGES (1,‘DBMS_LOGMNR’);
(2) 添加需要分析的归档日志文件。
DBMS_LOGMNR.ADD_LOGFILE(’/dbarch/dmarch/ARCHIVE_LOCAL1_0x2EACED66_EP0_2026-03-19_14-13-40.log’);
(3) 查询通过 ADD_LOGFILE 添加的归档日志文件
可以查询 VLOGMNR_LOGS动态视图进行插入,如下: SELECT LOW_SCN,NEXT_SCN, LOW_TIME, HIGH_TIME, LOG_ID, FILENAME FROM VLOGMNR_LOGS;
image.png
(4) 启动归档日志文件分析。
DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128,STARTTIME=>TO_DATE(‘2024-09-06 22:45:16’,‘YYYY-MM-DD HH24:MI:SS’),ENDTIME=>TO_DATE(‘2024-11-29 22:45:16.’,‘YYYY-MM-DD HH24:MI:SS’));
或不指定时间
DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128);
image.png
(5) 查看归档日志文件的分析结果。
SELECT * FROM VLOGMNR_CONTENTS; 进行日志挖掘过程中,在 VLOGMNR_LOGS、VLOGMNR_CONTENTS 等数据库动态性能视图上会产生分析数据,数据存储在 TEMP 临时表空间上,会话断开或终止归档日志文件分析后,数据会被清除。可以将VLOGMNR_CONTENTS视图内容写入一张普通表后进行分析,避免分析结果丢失。
create table logmnrtab1 as select * from V$LOGMNR_CONTENTS;
image.png

image.png
数据库对象信息需到原库查询确认
image.png
从以上内容可以看出物化视图基表大量insert操作,进一步通过sqllog确认该物化视图全量刷新频率由1天改成每5分钟刷新一次,进而导致归档量激增,造成IO瓶颈
(6) 终止归档日志文件分析。
DBMS_LOGMNR.END_LOGMNR();
当完成对 VLOGMNR_CONTENTS 的查询和分析后,务必执行以下命令来关闭 LogMiner 会话并释放资源: ·清空当前会话的 VLOGMNR_LOGS 和 V$LOGMNR_CONTENTS 等视图中的数据
·释放会话占用的内存资源
·解除对归档日志文件的引用

最佳实践:进行日志挖掘时,建议在同一个会话中按顺序执行 ADD_LOGFILE → START_LOGMNR → 查询 V$LOGMNR_CONTENTS → END_LOGMNR,确保资源及时释放。

未及时释放安全风险:
·日志挖掘启动后,系统会在当前会话中分配内存来加载归档日志并维护 V$LOGMNR_CONTENTS 等动态视图的数据。如果分析完成但不结束会话,这部分内存资源会一直被该会话占用而无法释放,可能导致数据库整体内存使用量上升;
·日志挖掘通常会加载归档日志文件。如果分析完毕后一直不释放会话和日志句柄,归档日志文件可能因被会话引用而无法被系统正常删除或归档清理,长期累积可能导致归档空间告警。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服