原文鏈接:https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrlstate=23w4l35u5_4&id=1523934.1用途 提出問題,得到幫助並分享您的心得 排錯步驟 什麼是shared pool? 專用術語 Liter... ...
原文鏈接:https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrlstate= 23w4l35u5_4&id=1523934.1 用途 |
提出問題,得到幫助並分享您的心得 |
排錯步驟 |
什麼是shared pool? |
專用術語 |
Literal SQL |
Hard Parse(硬解析) |
Soft Parse(軟解析) |
完全相同的語句? |
Sharable SQL |
語句的版本 |
Library Cache和Shared Pool latches |
Literal SQL和Shared SQL的比較 |
Literal SQL |
Sharable SQL |
減輕Shared Pool負載 |
Parse一次並執行多次 |
消除 Literal SQL |
避免 Invalidations |
CURSOR_SHARING 參數 (8.1.6 以上) |
SESSION_CACHED_CURSORS 參數 |
CURSOR_SPACE_FOR_TIME 參數 |
CLOSE_CACHED_OPEN_CURSORS 參數 |
SHARED_POOL_RESERVED_SIZE 參數 |
SHARED_POOL_RESERVED_MIN_ALLOC 參數 |
SHARED_POOL_SIZE 參數 |
_SQLEXEC_PROGRESSION_COST parameter 參數 (8.1.5 以上) |
預編譯器的 HOLD_CURSOR 和 RELEASE_CURSOR 選項 |
將cursor固定(pinning)在shared pool中 |
DBMS_SHARED_POOL.KEEP |
Flushing(清空) SHARED POOL |
DBMS_SHARED_POOL.PURGE |
使用 V$ 視圖 (V$SQL 和 V$SQLAREA) |
MTS, Shared Server 和 XA |
使用SQL 查看Shared Pool問題 |
在不同Oracle Releases中的都會遇到的問題 |
Bug 修複和增強功能 |
參考 |
適用於:
Oracle Database - Standard Edition - 版本 7.0.16.0 到 11.2.0.3 [發行版 7.0 到 11.2]Oracle Database - Enterprise Edition - 版本 7.0.16.0 到 11.2.0.2 [發行版 7.0 到 11.2]
Oracle Database - Personal Edition - 版本 7.1.4.0 到 11.2.0.3 [發行版 7.1.4 到 11.2]
本文檔所含信息適用於所有平臺
用途
簡介
本文檔旨在介紹從Oracle 7到Oracle 11g shared pool調優的關鍵問題。特別對於存在下列問題的系統非常重要:
- library cache latch/es或者latch:library cache之類的 Latch爭用
- shared pool latch 或者 latch:shared pool 之類的Latch爭用
- 高CPU解析時間
- V$LIBRARYCACHE 中的高reloads
- 多版本的cursors
- 大量的parse call
- 經常發生ORA-04031 錯誤
提出問題,得到幫助並分享您的心得
您想同 Oracle 客戶,員工及其它業界專家進一步探討這個問題嗎?在這裡 您可以問問題,得到其他人的幫助以及分享您的心得。
更多其它關於資料庫性能優化的討論請到這裡.
排錯步驟
什麼是shared pool?
Oracle 在SGA的一個特定區域中保留SQL語句, packages, 對象信息以及其它一些內容,這就是大家熟悉的shared pool。這個共用記憶體區域是由一個複雜的cache和heap manager 構成的。它需要解決三個基本問題:
- 每次分配的記憶體大小是不一致的,從幾個位元組到上千個位元組;
- 因為shared pool的目的是為了最大化共用信息,所以不是每次一個用戶用完之後就可以釋放這段記憶體(在傳統的heap manager方式會遇到這個問題)。記憶體中的信息可能對於其他session來說是有用的——Oracle並不能事先知道這些內容是否會被再次用到;
- Shared pool中的內容不能被寫入到硬碟區域中,這一點和傳統cache是不一樣的。只有“可重建”的信息可以被覆蓋,因為他們可以在下次需要時重建。
基於這些背景,我們就可以理解shared pool的管理是一件非常複雜的事情。下麵的章節列出了一些影響shared pool性能和它相關的latch的關鍵問題,包括: