1.分析及解决方案概述
分析原因 通过对现有信息的分析,可以看到4031是由于bug27824540、27163928引起。
解决方案 针对现有情况,建议如下:
1)升级到12c最新基线版本
2)扩容sga到30G
后续计划 xxx
2.问题描述
5月17日Oracle 4031,后重启数据库解决,需要从根本上分析问题原因,避免该类问题再次发生;
操作系统版本 Linux
数据库架构 RAC
数据库版本 12C
业务名称 xxx
3.问题分析
3.1问题现象
5月17日Oracle跑批失败,报错4031 ORA-04031: unable to allocate 12312 bytes of shared memory ("shared pool","unknown object","KKSSP^606","kglseshtTable")
3.2Trace分析
子池无法分配内存 ORA-04031: unable to allocate 13840 bytes of shared memory ("shared pool","unknown object","sga heap(5,0)","ges resource dynamic")
Session无法获取共享池内存
3.3内存分配状态分析
主机内存充足
sga大小20G
发现共享池使用率高
圈出来的这三个组件内存明显占了shared pool大部分内存
"Checkpoint queue " 是由于db_files参数配置的是“20000”,内存高属于正常情况
shared pool有grow失败记录
3.4Bug分析
发现类似bug27824540、27163928
数据库没有RU,符合bug描述和版本说明
3.5问题分析总结
综合上述分析,我们可以看到:
4031是由于bug27824540、27163928引起。
4.处理/优化建议
针对现有情况,建议如下:
1.升级到12c最新基线版本
2.扩容sga到30G(注意buffer cache和shared pool参数、内存锁定为unlimited、大页和kernel.shmmax、kernel.shmall参数)