一、服务概述
近期接到用户告知数据库归档暴增,导致生产库归档空间满,手动删除后,归档空间很快就会满。
立即登陆数据库系统,查询发现归档日志异常增长,从以前的每小时产生300M,增长到每小时产生59150M。拉取问题时段的AWR报告,将问题SQL提交给应用运维人员,应用修复相应模块功能后,故障得到解决。故障处理后,依据当时awr和问题处理过程,汇总此文档说明此次故障原因及以后的预防措施。
技术点:
1. ORACLE 11Gr2开始,数据库AWR中的segment部分的block change小节,可以显示块变更多的表或索引信息,依据此信息结合TOP SQL部分,可以很快速的确定导致产生很多归档日志的SQL语句、程序模块信息等。
2. 在ORACLE 10G中,只能结合TOP SQL,进行分析;极端情况下还需要对REDO LOG进行LOGMNR挖掘分析,可以得到引起归档日志产生量高的SQL语句。
二、问题处理及相关日志分析
- 查询数据库每小时归档产生量
归档查询发现,LIS数据库在20220311 22:00:00以后产生的归档量大幅增长,不在正常范围内,拉取22:00:00-23:00:00的AWR报告进行分析,查出产生大量归档的SQL。
- AWR报告分析
通过对数据库AWR报告分析查看,查找update或者delete执行很多次的SQL。
首先定位问题发生的时间点(根据日志切换频率)
收集正常及异常时刻的AWR,进行对比:
正常时间点:
问题时间点:
AWR TOP SQL分析:
在3600秒取样时间内,sql_id为2rmbgyhxhp4m3的语句执行27820次,结合客户反馈,将此SQL反馈给应用开发商,很快排查出问题,由于采样编码设置的最大值为999,当日采样人员过多,超过上限导致程序混乱,产生大量update,导致归档暴增,应用采取加模组方式暂时解决,后续修改采样编码上限。
三、总结与后续处理建议
- 故障分析总结
归档日志暴增故障分析:
排查归档日志增长原因,发现归档大量产生的原因是问题SQL导致,正常的SQL在出现异常执行时,也会产生问题,出现大量的归档,应该对SQL执行次数进行监控,出现异常执行次数时, 立即处理