共有プール領域に関する検証 その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キロのサーファーの卵がボードに立てるかどうか心配な茅ヶ崎にて