共有プール領域に関する検証 その7

<共有プールに関する検証 その7> ペンネーム ダーリン

– X$KSMSPについて --

前回まで数回にわたって、ダンプデータ内に存在する、カーソルやオブジェク
トに関する情報を追いかけてみた。

今回は少し目先をかえてこれまでとは違う方向から、共有プールを覗いてみよ
う。

X$KSMSPというX$表をご存知だろうか。このX$表からは共有プールの情報を取
得することが出来るが、かなりのレコード数になるので、逐一確認するのはか
なりつらい。が、今回は取り敢えずこのデータを取得してみよう。

SQL> select * from x$ksmsp;

ADDR           INDX    INST_ID   KSMCHIDX   KSMCHDUR KSMCHCOM    ・・
-------- ---------- ---------- ---------- ---------- ------------ ---
029FF528          0          1          1          1 KGL handles     
029FF4F0          1          1          1          1 KGL handles     
029FF4B8          2          1          1          1 library cache   
029FF480          3          1          1          1 sql area        
029FF448          4          1          1          1 free memory     
029FF410          5          1          1          1 library cache   
029FF3D8          6          1          1          1 sql area        
029FF3A0          7          1          1          1 free memory     
029FF368          8          1          1          1 KGL handles     
029FF330          9          1          1          1 library cache   
                 :
                 :
           <途中、省略>

79160行が選択されました。

というわけで、全部見ているときりがないので、まずは、見るカラムを絞る。

SQL> desc x$ksmsp
 名前
 ------------------
 ADDR
 INDX
 INST_ID
 KSMCHIDX
 KSMCHDUR
 KSMCHCOM
 KSMCHPTR
 KSMCHSIZ
 KSMCHCLS
 KSMCHTYP
 KSMCHPAR

“KSMCHCOM”は、共有プールがどのように使用されているかを示しており、よ
く知られる “sql area” や、”library cache” というデータがセットされて
いる。また、共有プールはデータベースバッファと異なり、ブロック単位で
領域を占有しない。この占有領域の大きさが”KSMCHSIZ”でわかる。

あと、”KSMCHCLS” には、そのステータスがセットされるので、これも取得し
よう。 “KSMCHPAR” は後で面白い見方が出来るので、これも取得する。

その結果が、以下のような感じになる。

SQL> select KSMCHCOM,KSMCHSIZ,KSMCHCLS,KSMCHPAR from x$ksmsp;

KSMCHCOM           KSMCHSIZ KSMCHCLS KSMCHPAR
---------------- ---------- -------- --------
KGL handles             500 recr     00      
KGL handles             188 recr     00      
library cache           100 freeabl  00      
sql area                272 freeabl  80B9E5F0
free memory             512 free     00      
library cache           560 recr     81161B68   

SQL> select KSMCHCOM,sum(KSMCHSIZ) from x$ksmsp group by KSMCHCOM

KSMCHCOM         SUM(KSMCHSIZ)
---------------- -------------
dictionary cach         162860
sql area               7913040
library cache          9657788
free memory           14371020
                 :
                 :
           <以下、省略>

39行が選択されました。

ちなみに、この環境はテスト用の環境ということもあり、”free memory”が
14MBもある。運用環境において、ピーク時に14MBも共有プールが空いている
場合は、OS側にメモリを開放することも検討してみてほしい。目安は、2MBか
ら5MB程度。

さてさて、”KSMCHPAR”カラムのデータの面白い見方は、次回のお楽しみとし
よう。

以上 まだ泳いでいないのに夏が終わる~茅ヶ崎にて