共計 1058 個字符,預計需要花費 3 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 Oracle Share Pool 內部管理機制的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
Oracle Share Pool 內部管理機制
SHARE POOL 利用堆(HEAP) 的內存管理方式管理,在物理上由多個內存區(EXTENT) 組成,內存區又由多個不同大小的 CHUNK 組成。而 CHUNK 又有可重用和空閑之分,并且它們分別有 LRU LIST、FREE LIST、RESERVED LIST 串聯起來。
堆管理
Shared Pool 是利用堆內存管理方式管理的(KGH:Kernel Generic Heap). 從 Oracle 9i 開始,可以有多個最高級堆(TOP-LEVLE HEAP),最高級堆可以分成多個副堆,副堆下面還擁有子堆。堆和副對結構基本相同。從物理上講,一個堆由多個內存區已 link list 的形式連接組成。一個內存區物理上使用一個 Granule,一個內存區由多個 chunk 組成,所以 chunk 是 heap 的最小內存單位。
Chunk 的使用情況可由 X$KSMSP 內部視圖查看。每個堆頭上則包含了可使用的 chunk 列表和已使用的 chunk 列表。通過 dump heap 命令可以在 trace 文件中觀察 heap 和 extent 的關系。
alter system set events immediate trace name heapdump level 2
案例:
SQL select name,bytes/1024/1024 from v$sgainfo;
NAME BYTES/1024/1024
-------------------------------- ---------------
Fixed SGA Size 1.27566528
Redo Buffers 5.59765625
Buffer Cache Size 180
Shared Pool Size 104
Large Pool Size 4
Java Pool Size 4
Streams Pool Size 0
Shared IO Pool Size 0
Granule Size 4
Maximum SGA Size 498.875
Startup overhead in Shared Pool 52
NAME BYTES/1024/1024
-------------------------------- ---------------
Free SGA Memory Available 200
12 rows selected.