关于数据库无法创建awr报告的问题
小编最近遇到了一个问题,即在创建awr报告时查不到snapshot信息,发现三天内一个snapshot都没有生成。通过多次检查发现,主机cpu和内存负载都不高,mmon进程运行状态正常,而且snapshot保留时间和快照间隔设置也正常,但是DBA_HIST_ACTIVE_SESS_HISTOR有数据,却没有生成snapshot保留时间和快照间隔。

问题解决过程
小编通过检查数据库日志,发现以下问题:
- flushAWR相关数据,有个waitevent:enq:WF-contention
- 有个waitevent:notinwait,通过SessId和Ser#可以查询到执行的问题sql和执行计划。
小编对sql进行了优化,发现该问题和文档DocID2226216.1中描述匹配。文档建议收集FIXEDTABLE(X$KEWRATTRNEW,X$KEWRSQLIDTAB)统计信息,但是收集完统计信息后,问题依旧存在,没有解决。经过多方尝试,小编最终选择业务停机维护时段,重新启动数据库释放X$KQLFBC表数据,暂时解决了问题,开始生成新的awr报告。
建议大家注意填充AWRwrh$_sql_bind_metadata表来自X$KQLFBCtable,如果X$KQLFBC中的过期的SQL父游标过多,就导致X$KQLFBC查询缓慢,从而导致AWR后台进程m00*进程因超时而挂起,因此需要避免该问题。
结论
在实践中,小编对于数据库无法创建awr报告的问题,建议大家先检查主机cpu和内存负载,进一步检查mmon进程运行状态以及snapshot保留时间和快照间隔设置,排除常见问题后,尝试收集FIXEDTABLE(X$KEWRATTRNEW,X$KEWRSQLIDTAB)统计信息,若问题依旧存在,则可以考虑选择在业务停机维护时段,重新启动数据库释放X$KQLFBC表数据解决问题。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6088.html
