记录一次ORA-00445告警处理方法_无图版

数据库环境

系统红旗linux 7.3,内存大页设置。SGA稍微小于内存大页设置,PGA设置250G。主机内存1T。

数据库版本11.2.0.4.16xxxx

现象

早晨期间,每次跑起存储过程,就会出现ORA-00445
我们通过OEM来观察的,每天只要这个存储过程启动以后,OEM就会出现断掉。过半小时就会启动。
zabbix观察发现有断掉的问题。

检查步骤

  1. 确认时间段发生问题5-8点
  2. AWR报告是否正常收集,没有正常收集。
  3. 是否有ORA报错,有
  4. 是否能生成awr报告,能收集5-8点的AWR报告
  5. zabbix告警 的CUP IO等是否正常,否,该时间段有断开
  6. oem查询怎样,oem查询agent有断开,说明这个时间段内存有可能有问题,导致内存不足。
  7. 后台日志查询ORA-00445这个产生的日志,发现内存确实不足。
  8. 查看等待事件次数,确定哪条最多。经过确认发现。

问题解决

确定了该时间段出现的SQL。对其进行分析。发现 直接采用了parallel(t)。这个存储过程已启动,就出现了问题。
建议修改成parallel(t,4) 问题解决。

问题总结

该问题为SQL跑报表过程中,没有进行优化,直接hash查询,采用parallel,并没有合理设置导致。
parallel的机制,由于跳过了SGA写入,直接写入PGA,PGA超过了内存限度导致。

SQL优化的过程中,应该详细分析报错日志,反过来查看SQL,这样就能快速定位。尤其是出现了IO忽然降下来的情况,一般都是parallel参数设置不合理导致的内存爆满,IO无法写入导致。

上一篇:MySQL数据库 Master库大量delete操作导致slave日志应用延迟


下一篇:【JVM进阶之路】七:垃圾收集器盘点