随笔 - 196  文章 - 0 评论 - 69 阅读 - 170万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

2011年1月14日

     先把数据库的机子介绍下:aix5

 

                   Host Mem (MB):                   7,936.0(4个cpu)

                   SGA use (MB):                    4,144.0

                   PGA use (MB):                    49.4

             % Host Mem used for SGA+PGA:  52.8                 

 

              Shared Pool Size(MB):      320

 

 

    这两天想看看数据库为什么性能差的问题,通过stackpack报告,查看了一些相关参数后,将Shared Pool Size改为800m,之后运行其存储过程老是提示:

 

“ORA 4031: unable to allocate %s bytes of shared memory (%s,%s,%s)”的错误。

    将监听配置改成专用服务器连接后(原来为共享服务器)即在监听配置上加上(SERVER = DEDICATED) ,程序执行没有报错。

    后来我又改为用共享服务器连接,将共享池大小改回320m,也没再报这个错。

但是原因是什么呢?

为什么我设置SHARED_POOL_SIZE为320,但是v$sgainfo视图中的SHARED_POOL_SIZE为624?

 

 我看网上搜到关于这个错误的原因都是解释说关于
SHARED_POOL_SIZE共享池大小是不是不够,或者
SHARED_POOL_RESERVED_SIZE参数与SHARED_POOL_RESERVED_MIN_ALLOC参数值不对(一般为SHARED_POOL_SIZE的10%)

 以下为网上搜的解决该错误的方法:

 

      ORA-04031 错误通常是因为库高速缓冲中或共享池保留空间中的碎片。 在加大共享池大小的时候考虑调整应用使用共享的SQL 并且调整如下的参数:
                 SHARED_POOL_SIZE,
                 SHARED_POOL_RESERVED_SIZE,
                 SHARED_POOL_RESERVED_MIN_ALLOC.
    首先判定是否ORA-04031 错误是由共享池保留空间中的库高速缓冲的碎片产生的。提交下的查询:
       SELECT free_space, avg_free_size,used_space,avg_used_size,request_failures, last_failure_size FROM v$shared_pool_reserved;
    如果:REQUEST_FAILURES > 0 并且LAST_FAILURE_SIZE > SHARED_POOL_RESERVED_MIN_ALLOC
       那么ORA-04031 错误就是因为共享池保留空间缺少连续空间所致。
       要解决这个问题,可以考虑加大SHARED_POOL_RESERVED_MIN_ALLOC 来降低缓冲进共享池保留空间的对象数目,并增大 SHARED_POOL_RESERVED_SIZE 和SHARED_POOL_SIZE 来加大共享池保留空间的可用内存。  
      如果:REQUEST_FAILURES > 0 并且LAST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC

 

或者REQUEST_FAILURES 等于0 并且LAST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC
     那么是因为在库高速缓冲缺少连续空间导致ORA-04031 错误  
     第一步应该考虑降低SHARED_POOL_RESERVED_MIN_ALLOC 以放入更多的对象到共享池保留空间中并且加大SHARED_POOL_SIZE。

 


 

 

   

posted on   蓝紫  阅读(909)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示