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

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

– V$SQLAREA と 子カーソル --

前回は、SQLの親カーソルの情報をメモリ上で追いかけてみた。
今回は、まず子カーソルの情報を探してみる。

以下は前回取得したダンプファイル内の、親カーソルの部分の抜粋である。

*************************************************************************

  LIBRARY OBJECT HANDLE: handle=821e121c       <------(※1)
  name=select * from emp
  hash=b382f8a6 timestamp=08-06-2002 09:41:20
  namespace=CRSR flags=RON/KGHP/TIM/PN0/SML/[12010000]
  kkkk-dddd-llll=0000-0001-0001 lock=N pin=0 latch=0
  lwt=821e1234[821e1234,821e1234] ltm=821e123c[821e123c,821e123c]
  pwt=821e124c[821e124c,821e124c] ptm=821e12a4[821e12a4,821e12a4]
  ref=821e1224[821e1224, 821e1224] lnd=821e12b0[821e12b0,821e12b0]
    LOCK OWNERS:
        lock     user  session count mode flags
    -------- -------- -------- ----- ---- ------------------------
    82451088 82c9e4dc 82c9e4dc     1 N   [00]
    LIBRARY OBJECT: object=809b8cf4
    type=CRSR flags=EXS[0001] pflags= [00] status=VALD load=0
    CHILDREN: size=16
    child#    table reference   handle
    ------ -------- --------- --------
         0 809b8e88  8079344c 819443ec       <------(※2)
    DATA BLOCKS:
    data#     heap  pointer status pins change alloc(K)  size(K)
    ----- -------- -------- ------ ---- ------ -------- --------
        0 81851570 809b8d78 I/P/A     0 NONE       0.80     1.05

*************************************************************************

ここで、関連がありそうな情報はというと、"child#"(※2)の部分であろうか。
そこで、"child#"の"handle"の部分に表示される値を検索してみよう。

すると、以下の部分が検索されるはずである。

*************************************************************************

  LIBRARY OBJECT HANDLE: handle=819443ec       <------(※3)
  namespace=CRSR flags=RON/KGHP/PN0/[10010000]
  kkkk-dddd-llll=0000-0041-0041 lock=N pin=0 latch=0
  lwt=81944404[81944404,81944404] ltm=8194440c[8194440c,8194440c]
  pwt=8194441c[8194441c,8194441c] ptm=81944474[81944474,81944474]
  ref=819443f4[8079344c, 8079344c] lnd=81944480[81944480,81944480]
    CHILD REFERENCES:
    reference latch flags
    --------- ----- -------------------
     8079344c     0 CHL[02]
    LOCK OWNERS:
        lock     user  session count mode flags
    -------- -------- -------- ----- ---- ------------------------
    82450f20 82c9e4dc 82c9e4dc     1 N   [00]
    LIBRARY OBJECT: object=814f8670           <------(※4)
    type=CRSR flags=EXS[0001] pflags= [00] status=VALD load=0
    DEPENDENCIES: count=1 size=16
    dependency#    table reference   handle position flags
    ----------- -------- --------- -------- -------- -------------------
              0 814f882c  814f8764 823802d0       14 DEP[01]
    ACCESSES: count=1 size=16
    dependency# types
    ----------- -----
              0 0009
    TRANSLATIONS: count=1 size=16
    original    final
    -------- --------
    823802d0 823802d0
    DATA BLOCKS:
    data#     heap  pointer status pins change alloc(K)  size(K)
    ----- -------- -------- ------ ---- ------ -------- --------
        0 81068d60 81c83fb8 I/P/A     0 NONE       1.06     1.64
        6 814f8704 8108f3c4 I/-/A     0 NONE       4.36     5.13

*************************************************************************

つまり、これが子カーソルの情報である。
親カーソルの情報と比較して、SQL文自体が表示されなかったり、情報がいく
らか多かったりしている。
また、子カーソルが複数存在する場合は、親カーソルの"child#"(※2)の部
分に複数行表示され、それぞれ、同様に子カーソルを探すことが出来る。

なお、今回子カーソルを探す際に使用した子カーソルの"handle"(※3)は
V$SQL表の"CHILD_ADDRESS"カラムに表示される値であるから、この値を元に
検索することも出来る。

さて、親カーソルよりいくらか情報が多いことは上記の抜粋からわかると思
うが、その中でも、興味深いのが"DEPENDENCIES"(※4)で、おそらく賢明な
読者諸氏はお分かりだろうが、これは、このカーソル(SQL)の関連オブジェ
クトの情報である。

子カーソルを探したときと同様に、今回は、"dependency#"の"handle"の値で
ダンプファイル内を検索してみよう。

おそらくいくつかの情報が検索された後、オブジェクトの情報が出てくるはず
だ。

この関連オブジェクトに関しては、次回検証してみよう。

先週の"お題"に多数のご回答をいただきありがとうございました。
ほとんどのご回答が、今回のめるまがで紹介した手順でしたので、抽選を行
った上で当選したみなさんに、グッズをご送付したいと思います。

以上 ここ何日か避暑地の涼しさが続く茅ヶ崎にて