共计 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.