ORA-04031: unable to allocate 13840 bytes of shared memory (“shared pool“,“unknown object“,“sga heap

本文介绍了在Oracle RAC环境下遇到的ORA-04031错误,问题由'ges resource dynamic'内存泄漏引起。通过监控SGA的动态增长,发现共享池占用过大,导致缓冲区缓存收缩。解决方案包括禁用特定行动或设置初始化参数。计划对更多Oracle RAC相关问题进行记录。
摘要由CSDN通过智能技术生成

还是年前的时候,绩效系统一直告警,查看了下,库上一直报ora-4031,很常见的错误,当时下意识的认为是内存不足了。

应该绩效手上在exadata一体机上,该一体机上还装了其他几套系统,内存资源比较紧张。

当时flush了下shared_pool,但没啥效果,因为是rac环境,便依次重启了实例,故障就消失了。

没过多久,绩效数据库又出现了这样的情况,共享池不足,就感觉不对劲了,但当时是年底了,马上就过年了,没啥心思探究。

结果过年期间,同属于exadata上crm系统也出现这样的情况,基本确定确实有问题了。

年后回来事情一直比较多,今天下午得空排查了一下,发现share pool一直在增长。大概可以推算出,由于共享池无节制的增长,导致buffer cache一直在被调缩,

直至share pool占据了绝大多数的sga,无法再增长,继而报错,导致数据库无法访问。

 

数据库版本及补丁

12.2.0.1181016

在MOS上搜了下,相关bug还挺多,到处瞧到处看,找到如下文档:

Bug 27824540 - ORA-4031 Error In Shared Pool Due To Leakage Of 'ges resource dynamic' Chunk In RAC Env (Doc ID 27824540.8)

Too many objects "ges resource dynamic" were allocated in the shared pool eventually failing with errors like: ORA-04031 
  
Monitoring "ges resource  dynamic" growth via the following shows a general upward trend: 
 
select inst_id, name, round(bytes/(1024*1024*1024),1) in_gb from gv$sgastat where name = 'ges resource dynamic'; 
 
- example after an instance restart: 
 
   INST_ID NAME                            IN_GB 
---------- -------------------------- ---------- 
         1 ges resource dynamic              

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值