ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

oracle-04031 bug

oracle-04031 bug

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参数)

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进