ORA-04031 错误
2011年1月14日
???? 先把數(shù)據(jù)庫(kù)的機(jī)子介紹下:aix5
?
?????????????????? Host Mem (MB):?????????????????? 7,936.0(4個(gè)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?
?
??? 這兩天想看看數(shù)據(jù)庫(kù)為什么性能差的問(wèn)題,通過(guò)stackpack報(bào)告,查看了一些相關(guān)參數(shù)后,將Shared Pool Size改為800m,之后運(yùn)行其存儲(chǔ)過(guò)程老是提示:
?
“ORA 4031: unable to allocate %s bytes of shared memory (%s,%s,%s)”的錯(cuò)誤。? ? 將監(jiān)聽(tīng)配置改成專用服務(wù)器連接后(原來(lái)為共享服務(wù)器)即在監(jiān)聽(tīng)配置上加上(SERVER = DEDICATED) ,程序執(zhí)行沒(méi)有報(bào)錯(cuò)。
? ? 后來(lái)我又改為用共享服務(wù)器連接,將共享池大小改回320m,也沒(méi)再報(bào)這個(gè)錯(cuò)。
但是原因是什么呢?
為什么我設(shè)置SHARED_POOL_SIZE為320,但是v$sgainfo視圖中的SHARED_POOL_SIZE為624?
?
?我看網(wǎng)上搜到關(guān)于這個(gè)錯(cuò)誤的原因都是解釋說(shuō)關(guān)于SHARED_POOL_SIZE共享池大小是不是不夠,或者SHARED_POOL_RESERVED_SIZE參數(shù)與SHARED_POOL_RESERVED_MIN_ALLOC參數(shù)值不對(duì)(一般為SHARED_POOL_SIZE的10%)?以下為網(wǎng)上搜的解決該錯(cuò)誤的方法:
?
????? ORA-04031 錯(cuò)誤通常是因?yàn)閹?kù)高速緩沖中或共享池保留空間中的碎片。 在加大共享池大小的時(shí)候考慮調(diào)整應(yīng)用使用共享的SQL 并且調(diào)整如下的參數(shù):???????????????? SHARED_POOL_SIZE,
???????????????? SHARED_POOL_RESERVED_SIZE,
???????????????? SHARED_POOL_RESERVED_MIN_ALLOC.
??? 首先判定是否ORA-04031 錯(cuò)誤是由共享池保留空間中的庫(kù)高速緩沖的碎片產(chǎn)生的。提交下的查詢:
?????? 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 錯(cuò)誤就是因?yàn)楣蚕沓乇A艨臻g缺少連續(xù)空間所致。?????? 要解決這個(gè)問(wèn)題,可以考慮加大SHARED_POOL_RESERVED_MIN_ALLOC 來(lái)降低緩沖進(jìn)共享池保留空間的對(duì)象數(shù)目,并增大 SHARED_POOL_RESERVED_SIZE 和SHARED_POOL_SIZE 來(lái)加大共享池保留空間的可用內(nèi)存。?? ????? 如果:REQUEST_FAILURES > 0 并且LAST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC
?
或者REQUEST_FAILURES 等于0 并且LAST_FAILURE_SIZE < SHARED_POOL_RESERVED_MIN_ALLOC???? 那么是因?yàn)樵趲?kù)高速緩沖缺少連續(xù)空間導(dǎo)致ORA-04031 錯(cuò)誤?? 第一步應(yīng)該考慮降低SHARED_POOL_RESERVED_MIN_ALLOC 以放入更多的對(duì)象到共享池保留空間中并且加大SHARED_POOL_SIZE。
?
?
?
? ?
總結(jié)
以上是生活随笔為你收集整理的ORA-04031 错误的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: css自动限制图片大小
- 下一篇: C# WebBrowser docume