共有プール領域に関する検証 その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”カラムのデータの面白い見方は、次回のお楽しみとし
よう。
以上 まだ泳いでいないのに夏が終わる~茅ヶ崎にて