oracle shared_pool_size 0,Oracle shared_pool_reserved_size参数设置说明
當(dāng)我們使用下面的命令時,往往看到結(jié)果如下:
SQL> show parameter
shared_pool
NAME?TYPE?VALUE
------------------------------------ -----------
------------------------------
shared_pool_reserved_size?big integer 20971520
shared_pool_size?big integer 419430400
在Oracle中,shared_pool包含著兩部分,其中一個參數(shù)是:shared_pool_reserved_size。此參數(shù)是用來指定保留的共享池空間大小,用于滿足將來的大的連續(xù)的共享池空間請求。當(dāng)共享池出現(xiàn)過多碎片,請求大塊空間會導(dǎo)致Oracle大范圍的查找并釋放共享池內(nèi)存來滿足請求,由此可能會帶來較為嚴(yán)重的性能下降,通過設(shè)置合適的shared_pool_reserved_size參數(shù),結(jié)合shared_pool_reserved_min_alloc參數(shù)可以用來避免由此導(dǎo)致的性能下降。
這個參數(shù)理想值應(yīng)該大到足以滿足任何對RESERVED
LIST的內(nèi)存請求,而無需數(shù)據(jù)庫從共享池中刷新對象。這個參數(shù)的缺省值是shared_pool_size的5%,通常這個參數(shù)的建議值為shared_pool_size參數(shù)的10%~20%大小,最大不得超過shared_pool_size的50%。
同樣地,在trace文件中,可以找到關(guān)于保留列表(RESERVED
LIST)的內(nèi)存信息。
_shared_pool_reserved_min_alloc這個參數(shù)的值控制保留內(nèi)存的使用和分配。如果一個足夠尺寸的大塊內(nèi)存請求在共享池空閑列表(FREE
LIST)中沒能找到,內(nèi)存就從保留列表(RESERVED
LIST)中分配一塊比這個值大的空間。
在不同的版本中,該參數(shù)的缺省值一直都是4400。
這個參數(shù)默認(rèn)值對于大多數(shù)系統(tǒng)來說都足夠了。如果系統(tǒng)經(jīng)常出現(xiàn)ORA-04031錯誤都是請求大于4400的內(nèi)存塊,那么就可能需要增加shared_pool_reserved_size參數(shù)設(shè)置。
而如果主要的引發(fā)LRU合并、老化并出現(xiàn)ORA-04031錯誤的內(nèi)存請求在4100~4400bytes之間,那么降低_shared_pool_reserved_min_alloc同時適當(dāng)增大SHARED_POOL_RESERVED_SIZE參數(shù)值通常會有所幫助。設(shè)置_shared_pool_reserved_min_alloc=4100可以增加Shared
Pool成功滿足請求的概率。需要注意的是,這個參數(shù)的修改應(yīng)對結(jié)合Shared Pool Size 和 Shared Pool
Reserved
Size的修改。設(shè)置_shared_pool_reserved_min_alloc=4100是經(jīng)過證明的可靠方式,不建議設(shè)置更低。
查詢v$shared_pool_reserved視圖可以用于判斷共享池問題的引發(fā)原因,以下查詢來自一個業(yè)務(wù)系統(tǒng),注意系統(tǒng)出現(xiàn)過2次的請求失敗,最后一次請求的內(nèi)存塊大小是3896
Bytes。由于這個環(huán)境沒有報ORA-04031錯誤,所以不對_shared_pool_reserved_min_alloc參數(shù)進(jìn)行修改。
oracle@TestDB> select
free_space,avg_free_size,used_space,avg_used_size,request_failures,last_failure_size
2?from
v$shared_pool_reserved;
FREE_SPACE AVG_FREE_SIZE USED_SPACE
AVG_USED_SIZE REQUEST_FAILURES LAST_FAILURE_SIZE
---------- ------------- ----------
------------- ---------------- -----------------
44406648?727977.836?86640?1420.32787?2?3896
如果request_failures > 0 并且
last_failure_size >
_shared_pool_reserved_min_alloc,那么ORA-04031錯誤就可能是因為共享池保留空間缺少連續(xù)空間所致。要解決這個問題,可以考慮加大_shared_pool_reserved_min_alloc來降低緩沖進(jìn)共享池保留空間的對象數(shù)目,并增大shared_pool_reserved_size
和 shared_pool_size來加大共享池保留空間的可用內(nèi)存。
如果request_failures > 0 并且
last_failure_size <
_shared_pool_reserved_min_alloc,此時不滿足從reserved分配空間的最小值要求,而失敗,說明是因為在庫高速緩沖(shared_pool_size和open_cursors)缺少連續(xù)空間導(dǎo)致ORA-04031錯誤。此時可以考慮適當(dāng)增加shared_pool_size或open_cursors來解決此錯誤。
總結(jié)
以上是生活随笔為你收集整理的oracle shared_pool_size 0,Oracle shared_pool_reserved_size参数设置说明的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle定时任务可以备份么,Linu
- 下一篇: linux 5.5安装万兆网卡驱动,Re