ORA-04031 错误
生活随笔
收集整理的這篇文章主要介紹了
ORA-04031 错误
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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。
?
?
?
? ?
總結
以上是生活随笔為你收集整理的ORA-04031 错误的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css自动限制图片大小
- 下一篇: C# WebBrowser docume