shared pool之一:heap /extent /chunk/x$ksmsp

來源:互聯網
上載者:User

介紹shared pool物理結構的heap 堆,extent 區,chunk

記憶體中:共用池、大池、PGA是heap管理
shared pool物理層面上由許多記憶體塊組成,這些內在塊稱為chunk,chunk是shared pool中記憶體配置最小單位-類似extent,但是chunk是大小不一的,在記憶體中一個chunk是連續的。
chunk屬於可用類型的時候,既不屬於library cache,也不屬於dictionary cache,
如果chunk被用於存放SQL相關的資料時,則該chunk就屬於library cache;
如果該chunk被用於存放資料字典的資訊時,則該chunk就是屬於dictionary
Chunk可以分為4類-或者叫4種狀態:
1.free:chunk中沒有有效對象,可以不受限制的分配
2.recr:recreatable,--可重用的,chunk裡麵包含的對象可以被臨時性的移    走,如果需要,可以重建,例如共用SQL語句
3.freeabl:--可釋放的,session用過這個chunk,裡面存放的對象資料是session    在處理過程中產生的,沒有辦法重建,這點不同於recr。因此這個chunk不能被臨時性的移走。但是在合適的時間段可以被釋放。
4.perm:permanent,--永久的SGA的固定對象等,chunk中包含永久性的對象,但是大型的permanent類型的chunk中可能包含可用空間,需要的時候,這些空間可以被釋放。
x$ksmsp名稱含義為: kernal storage memory management sga heap
注意:據說在10.1.0.2版本中某些平台上查詢此視圖會有BUG導致CPU過載
SYS@ bys3>desc x$ksmsp
 Name     
 ------------
 ADDR       --x$ksmsp視圖中一行資訊在記憶體中地址
 INDX       --
 INST_ID    --
 KSMCHIDX   --
 KSMCHDUR   --
 KSMCHCOM   --chunk描述
 KSMCHPTR   --CHUNK地址
 KSMCHSIZ   --代表chunk大小
 KSMCHCLS   --chunk類型--freeabl-recr-perm-free
 KSMCHTYP   --
 KSMCHPAR   --父物件的地址--可能是.KGLOBHD0
 SYS@ bys3>select count(*) from x$ksmsp;     --每個chunk在x$ksmsp中都有記錄,可以統計出chunk數量
  COUNT(*)
----------
     18224
SYS@ bys3>select * from bys.test;
SYS@ bys3>select * from bys.test where status=2;
SYS@ bys3>select count(*) from x$ksmsp; 
  COUNT(*)
----------
     18251
 如資料庫存在大量硬解析,不停請求分配free的共用池記憶體,會引起shared pool latch,以及shared pool產生更多片段。--記憶體回收時,chunk數量會減少。 

SYS@ bys3>select distinct(ksmchcls) from x$ksmsp;
KSMCHCLS
--------
freeabl
recr
perm
R-freea
R-free
R-perm
free
R-recr

SYS@ bys3>select KSMCHCLS,count(*) ,round(sum( KSMCHSIZ/1024/1024),0) MB,round(avg(KSMCHSIZ),0) from x$ksmsp group by KSMCHCLS order by 1;
KSMCHCLS   COUNT(*)         MB ROUND(AVG(KSMCHSIZ),0)
-------- ---------- ---------- ----------------------
R-free           43          6                 152374
R-freea          98          0                   3915
R-perm            4         16                4111578
R-recr            1          4                3977200
free           1937          0                    226
freeabl        5815         11                   2057
perm            271         89                 343653
recr          11127         13                   1250
###################


SubPool 子池

 SubPool:最多7個 (4cpu-->1,128M(9i),256M(10g),512M(11g))
 alter system set "_kghdsidx_count"=2 scope=spfile;
DUMP 共用池查看heap/extent/chunk結構:--用建立會話來做
alter session set events 'immediate trace name heapdump level 2';
select value from v$diag_info where name like 'De%';
/u01/diag/rdbms/bys3/bys3/trace/bys3_ora_7876.trc

******************************************************
  desc=0x200010b4    
 ad4 alt=124 het=32767 rec=9 flg=-126 opc=0    --ad4  轉換為十進位大小是:31444
 parent=(nil) owner=(nil) nex=(nil) xsz=0x0 heap=(nil)
 fl2=0x60, nex=(nil)
 ds for latch 1: 0x20030f24
 reserved granule count 0 (granule size 4194304)
******************************************************
  desc=0x20030f24  
  --進階堆的子緩衝區--共用池的
4 alt=124 het=32767 rec=9 flg=-126 opc=0 ,更大的在保留池
 parent=(nil) owner=(nil) nex=(nil) xsz=0x400000 heap=(nil)
 fl2=0x20, nex=(nil), dsxvers=1, dsxflg=0x0
 dsx first ext=0x2c400000
 latch set 1 of 1
 durations disabled for this heap
 reserved granules for root 0 (granule size 4194304)
,一個有多個Chunk
  Chunk 23c00038 sz=       24  R-stopper   "reserved stoppe"  
  Chunk 23c00050 sz=    14300  R-free      "               "  
  Chunk 23c0382c sz=     8224  R-freeable  "KKSSP^38       "  ds=0x23d8f480
  Chunk 23c0a8e4 sz=   169732  R-free      "               "
  Chunk 23c33fe8 sz=       24  R-stopper   "reserved stoppe"
  Chunk 23c34000 sz=    15776    perm      "perm           "  alo=15776
  狀態的CHUNK,23c37da0 記憶體位址,84位元組,可以看到各chunk大小不一
狀態的CHUNK, 沒有latch

Chunk 23bfadc8 sz=     4124    freeable  "PLMCD^f24c7997 "  ds=0x24609ea8
  Chunk 23bfbde4 sz=     4096    recreate  "SQLA^9d1660bd  "  latch=(nil)
     ds 23f49e9c sz=    12288 ct=        3
        24177984 sz=     4096
        239fa8bc sz=     4096

…………………………

有很多個。。

  Chunk 2ac00038 sz=       24  R-stopper   "reserved stoppe"
  Chunk 2ac00050 sz=   212888  R-free      "               "
  Chunk 2ac33fe8 sz=       24  R-stopper   "reserved stoppe"
  Chunk 2ac34000 sz=  3971084    perm      "perm           "  alo=3971084
  Chunk 2affd80c sz=    10096    perm      "perm           "  alo=10096
  Chunk 2affff7c sz=       28    freeable  "PRESENTATION EN"
  Chunk 2affff98 sz=      104    freeable  "Label Cache Hea"
EXTENT 31 addr=0x2b000000

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.