• ORA04031 错误


    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。


       

  • 相关阅读:
    Flink 作为现代数据仓库的统一引擎:Hive 集成生产就绪!
    终于要跟大家见面了,Flink 面试指南
    了解jQuery的$符号
    关于serialVersionUID的说明
    Java类更改常量后编译不生效
    ora-00054资源正忙,但指定以nowait方式
    【Servlet】基于Jsp的微信Oauth2认证
    [Maven]Maven构建可执行的jar包(包含依赖jar包)
    FTP服务FileZilla Server上传提示550 Permission denied
    nginx
  • 原文地址:https://www.cnblogs.com/lanzi/p/1935358.html
Copyright © 2020-2023  润新知