ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一个解决ORA-04031错误的参数设置

一个解决ORA-04031错误的参数设置

原创 Linux操作系统 作者:liduanfeng 时间:2010-10-20 09:08:14 0 删除 编辑

shared_pool_reserved_size,该参数是指定保留的共享池空间,用于满足大的连续的共享池空间请求。

当共享池出现过多碎片,请求大块空间会导致oracle大范围的查找并释放共享池内存来满足请求,由此可能会导致较为严重的性能下降,设置合适的shared_pool_reserved_size参数,结合shared_pool_reserved_min_alloc参数可以避免由此导致的性能下降,这个参数理想值应该大到足以满足任何对reserved list的内存请求,而无需数据库从共享池中刷新对象,这个参数的缺省值是shared_pool_size的5%,通常这个建议值为shared_pool_size参数的10%-20%,最大不能超过50%。

shared_pool_reserved_min_alloc这个参数的值控制保留内存的使用和分配。如果在共享池空闲列表中请求一个足够大的大块内存,但没有找到合适的空间,内存就从保留列表(reserved list)中分配一块比这个参数值大的空间。在9i中,该参数缺省值为4400。

这个参数默认的值对于大多数系统来说是足够的,如果系统经常出现ORA-04031错误都是请求大于4400bytes的内存块,那么就可能需要增大shared_pool_reserved_size参数的设置。

如果主要引发LRU合并、老化并出现ORA-04031错误的内存请求在4100-4400bytes之间,那么降低_shared_pool_reserved_min_alloc同时适当增大shared_pool_reserved_size值通常很有帮助,设置_shared_pool_reserved_min_alloc=4100可以增加shared_pool成功满足请求的概率,需要注意的是,这个参数的修改应当结合shared pool size和shared pool reserved size的大小,设置_shared_pool_reserved_min_alloc=4100是经过证明的可靠方式,不建议设置更低。

查询v$shared_pool_reserved试图可以判断共享池引发的原因

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_failures_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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22462885/viewspace-676340/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: shared pool的设置
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-09-02

  • 博文量
    4
  • 访问量
    10561