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

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

– V$SQLAREA と オブジェクト --

前々回では、ダンプデータ内からカーソル情報を探してみたが、V$SQLAREAの
“ADDRESS”の値(または、”HASH_VALUE”)を検索することで親カーソルの情報
を見つけることが出来た。

そして前回は、親カーソルの”child#”の部分にある、”handle”の値を検索するこ
とで、さらに子カーソルの情報を検索することが出来た。
ここには、”dependency#”といういかにも関連オブジェクトをにおわす値も示
されている。

さてさて、皆さんダンプデータから、オブジェクトの情報を見つけることは
出来たでしょうか。

(子カーソル情報の抜粋)
*************************************************************************

  LIBRARY OBJECT HANDLE: handle=819443ec
  namespace=CRSR flags=RON/KGHP/PN0/[10010000]

          < 中略 >

    LIBRARY OBJECT: object=814f8670
    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]
                                   ~~~~~~~~(※1)
          < 省略 >

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

子カーソルを見つけた場合と同様に”dependency#”の”handle”の値で、検索し
てみよう。
すると、以下のような情報が見つかるはずである。


  LIBRARY OBJECT HANDLE: handle=823802d0        <-----(※2)
  name=SCOTT.EMP 
  hash=99a501c timestamp=07-16-2002 01:14:20    <-----(※3)
  namespace=TABL/PRCD/TYPE flags=KGHP/TIM/SML/[02000000]
  kkkk-dddd-llll=0000-0501-0501 lock=0 pin=0 latch=2
  lwt=823802e8[823802e8,823802e8] ltm=823802f0[823802f0,823802f0]
  pwt=82380300[82380300,82380300] ptm=82380358[82380358,82380358]
  ref=823802d8[823802d8, 823802d8] lnd=82380364[8231cf80,821c96e4]
    DEPENDENCY REFERENCES:
    reference latch flags
    --------- ----- -------------------
     814f8764     0 DEP[01]                      
SQL> select FROM_ADDRESS,FROM_HASH
  2        ,TO_OWNER,TO_NAME,TO_ADDRESS
  3        ,TO_HASH,TO_TYPE
  4  from v$object_dependency
  5  where TO_ADDRESS = hextoraw('823802D0')
  6  and   TO_HASH = 161107996;

FROM_ADD  FROM_HASH TO_OWNER TO_NAME TO_ADDRE   TO_HASH TO_TYPE
-------- ---------- -------- ------- -------- --------- -------
821E121C 3011704998 SCOTT    EMP     823802D0 161107996       2

ちなみに、”TO_ADDRESS”、”TO_HASH”で検索して複数行表示される場合は、同
一オブジェクトが、複数のSQLからアクセスされる可能性があるので、レスポ
ンスの上でも、注目したほうがよいかもしれない。
また、このような場合、ダンプデータの”DEPENDENCY REFERENCES:”(※4)の
部分に複数行存在しているはずで、その”reference” の値をダンプデータ内で
検索すると、そのオブジェクトを参照しているそれぞれの子カーソル情報をた
どることも出来る。

V$OBJECT_DEPENDENCY表から検索された”FROM_ADDRESS”、”FROM_HASH”は親カー
ソルの情報であり、V$SQLAREA表とジョインすると、そのSQL文の情報を取得で
きる。ちなみにV$OBJECT_DEPENDENCY表のデータは、V$SQLAREAと同様、共有プー
ル上に存在するSQLに関するオブジェクト情報なので、SQL文が共有プールから
追い出されたり、または意図的に”FLUSH”した場合は、SQL同様データは消えて
しまうので要注意。

今回はここまで。

以上 80キロのサーファーの卵がボードに立てるかどうか心配な茅ヶ崎にて