SHARED_POOL_RESERVED_SIZE引數的設定及作用
SHARED_POOL_RESERVED_SIZE引數的設定及作用
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%大小,最大不得
超過shared_pool_size的50%。
同樣地,在trace檔案中,可以找到關於保留列表(RESERVED LIST)的記憶體資訊:
RESERVED FREE LISTS:
Reserved bucket 0 size=16
Reserved bucket 1 size=4400
Reserved bucket 2 size=8204
Reserved bucket 3 size=8460
Reserved bucket 4 size=8464
Reserved bucket 5 size=8468
Reserved bucket 6 size=8472
Reserved bucket 7 size=9296
Reserved bucket 8 size=9300
Reserved bucket 9 size=12320
Reserved bucket 10 size=12324
Reserved bucket 11 size=16396
Reserved bucket 12 size=32780
Reserved bucket 13 size=65548
Chunk 41000050 sz= 212888 R-free " "
Chunk 41400050 sz= 212888 R-free " "
Chunk 41800050 sz= 212888 R-free " "
Chunk 41c00050 sz= 212888 R-free " "
Chunk 42000050 sz= 212888 R-free " "
Chunk 42400050 sz= 212888 R-free " "
Chunk 42800050 sz= 212888 R-free " "
Chunk 42c00050 sz= 212888 R-free " "
Chunk 43000050 sz= 212888 R-free " "
Chunk 43400050 sz= 212888 R-free " "
Chunk 43800050 sz= 212888 R-free " "
Chunk 44000050 sz= 212888 R-free " "
Total reserved free space = 2554656
_shared_pool_reserved_min_alloc這個引數的值控制保留記憶體的使用和分配。如果一個足夠尺寸的大塊記憶體請求在共享池空閒列表(FREE LIST)中沒能找到,記憶體就從保留列表(RESERVED LIST)中分配一塊比這個值大的空間。
在不同的版本中,該引數的預設值一直都是4400,以下輸出來自Oracle 11gR1版本:
> @GetHidPar
Enter value for par: shared_pool_reserved_min_alloc
old 4: AND x.ksppinm LIKE '%&par%'
new 4: AND x.ksppinm LIKE '%shared_pool_reserved_min_alloc%'
NAME VALUE DESCRIB
----------------------------------- ---------- ----------------------------------------------------------------------
_shared_pool_reserved_min_alloc 4400 minimum allocation size in bytes for reserved area of shared pool
這個引數預設的值對於大多數系統來說都足夠了。如果系統經常出現ORA-04031錯誤都是請求大於4400的記憶體塊,那麼就
可能需要增加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檢視可以用於判斷共享池問題的引發原因,以下查詢來自一個業務系統,注意系統出現過2次的
請求失敗,最後一次請求的記憶體塊大小是3896Bytes。由於這個環境沒有報ORA-04031錯誤,所以不對_shared_pool_reserved_min_alloc
引數進行修改。
> 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錯誤就可能是因
為共享池保留空間缺少連續空間所致。要解決這個問題,可以考慮加大_shared_pool_reserved_min_alloc來降低緩衝進共享
池保留空間的物件數目,並增大shared_pool_reserved_size 和 shared_pool_size來加大共享池保留空間的可用記憶體。
如果request_failures > 0 並且 last_failure_size < _shared_pool_reserved_min_alloc,那麼是因為在庫高速緩衝缺少
連續空間導致ORA-04031錯誤。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29523859/viewspace-1331182/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hibernate中的自動建表及引數作用
- tomcat vm 引數設定Tomcat
- 2.7.11 檢視引數設定的方法
- curl CURLOPT_WRITEFUNCTION 的引數設定Function
- JVM常見引數設定JVM
- pandas引數設定小技巧
- Metasploit設定VERBOSE引數技巧
- Metasploit設定HttpTrace引數技巧HTTP
- Metasploit設定LHOST引數技巧
- JVM引數設定大氣JVM
- MySQL的配置檔案的引數設定MySql
- Flink提交Job的方式以及引數設定
- 19c exadata不能設定的引數
- Java 動態設定 JVM 引數的方法JavaJVM
- mysqldump --single-transaction引數的作用MySql
- Linux 中 grep -P引數的作用Linux
- 2.6.10 設定許可證引數
- [20200220]windows設定keepalive引數.txtWindows
- 引數的定義和引數的傳遞
- kafka生產者Producer引數設定及引數調優建議-kafka 商業環境實戰Kafka
- kafka消費者Consumer引數設定及引數調優建議-kafka 商業環境實戰Kafka
- webapi 設定swagger上請求引數的預設值WebAPISwagger
- SpringBoot基礎學習(三) 自定義配置、隨機數設定及引數間引用Spring Boot隨機
- Nginx伺服器常用引數設定Nginx伺服器
- Azure Blob (三)引數設定說明
- basler工業相機引數設定
- Java設定JSON字串引數編碼JavaJSON字串
- java 執行緒池的初始化引數解釋和引數設定Java執行緒
- Python命令列引數定義及注意事項Python命令列
- 檢視JVM預設引數及微調JVM啟動引數JVM
- Linux中chmod命令的定義及作用!Linux
- Python Lambda表示式的作用及定義Python
- JVM引數設定的一些參考方法JVM
- XamarinAndroid元件教程設定動畫的時長引數NaNAndroid元件動畫
- 2.7.6.2 設定或修改初始化引數的值
- log4j的基本使用和引數設定
- Django裡URL配置中name引數的作用Django
- springmvc引數設定預設值,多地址請求SpringMVC
- 建立 MQTT 連線時如何設定引數?MQQT