FAQ-EAS数据库报错ORA-04031
金蝶云社区-马瑞琪
马瑞琪
0人赞赏了该文章 794次浏览 未经作者许可,禁止转载编辑于2017年02月06日 10:19:18

适用版本EAS全部版本,使用Oracle数据库的都适用问题描述EAS的数据库应用过程中报错ORA-04031,导致发生内存溢出,数据库实例hang住,业务中断,影响生产。

数据库alert日志报错:

解决方案原因分析:原因一: sga过小,进而sharepool设置过小,导致数据库使用内存不足解决方法:修改sga_target的参数,增加sga大小。
原因二:• Oracle从9i开始,根据sharedpool的大小将sharedpool分为多个子池(subpool),每个子池有独立的free list,同时在分配时单独管理(有其独立 的shared pool latch)。Oracle的BUG或者说是内存分配策略缺陷导致某一类shared pool的内存分配只在一个子池(subpool)中,即多个子池的使用极不均衡,导致向那个使用得最多的子池申请内存时失败。报错信息中的”sga heap(5,1)”即指明是在第5个子池申请内存时失败。
解决方法:减少share pool子池数量。关键字: ORA-04031 ORACLE数据库hang住

附录:Oracle 11g的内存参数关系:


4.png(21.62KB)

11.jpg(47.13KB)

3.png(18.31KB)