Oracle9iに関する検証 その11
<Oracle 9iに関する検証 その11>
ペンネーム ちょびひげ
— データベース・バッファ上のデータ 6 --
前回はデータベース・バッファ(以下バッファ)上のリスト管理のイメージを
理解するため、バッファのダンプを取得し、バッファのLRUリストに注目して
みた。
今回はダンプファイルの各ブロックの情報を簡単に見てみたいとおもう。
ダンプは前回同様に以下のコマンドで取得する。
SQL> alter session set events 'immediate trace name buffers level 4';
ダンプファイルは初期化パラメータ”user_dump_dest”で指定されたディレク
トリに作成される。
以下がダンプの1ブロックに該当する内容である。
CHAIN: 849 LOC: 0x82f59914 HEAD: [843d9370,843d9370] BH (0x843d9370) file#: 1 rdba: 0x0040359e (1/13726) class 1 ba: 0x84036000 ↑【注目1】ブロックヘッダ 【注目2】↑ set: 3, dbwrid: 0 hash: [82f59914,82f59914], lru: [843d9308,843d95a8] ↑【注目3】 LRU flags: moved_to_tail ↑【注目4】LRUフラグ ckptq: [NULL] fileq: [NULL] st: XCURRENT, md: NULL, rsop: 0x0, tch: 0 flags: only_sequential_access ↑【注目5】 L:[0x0.0.0] H:[0x0.0.0] R:[0x0.0.0] buffer tsn: 0 rdba: 0x0040359e (1/13726) scn: 0x0000.0000cab6 seq: 0x02 flg: 0x04 tail: 0xcab60602 frmt: 0x02 chkval: 0x8e63 type: 0x06=trans data
上記のような内容がバッファ上のブロック数分存在する。
【注目1】ブロックヘッダ
前回の検証のLRUリストにリストされていたブロックヘッダである。
# LRUリストのダブルリンク構成で見られる16進数表示のブロックヘッダ
(NEXT_DIRECTION) 843e7878=>83fe8a30=>・・・・・・・・=>843e0b88=>843ee028 → ↑ | ------------------------ | ↑ | (NEXT_DIRECTION) | | 843ee028=>843e0b88=>・・・・・・・・=>83fe8a30=>843e7878 | ↑ | ---------------------------←
【注目2】Buffer Adddress?
X$BH表のBA列に対応する値で、これをもとにX$BH表の各行との対応付けが可
能。X$BH表はバッファの状態をみることが出来る表である。
SQL> desc x$bh より抜粋 名前 NULL? 型 ----------------------------------------- -------- ---------------------------- BA RAW(4) ↑これ
【注目3】LRU
LRUリストを構成する為の値であり、2つの値がそれぞれ前後のブロックの値
を指しており、LRUリストのダブルリンクを構成している。バッファヘッダと
は違う点に注意。
【注目4】LRUフラグ
X$BH表のLRU_FLAG列に対応する値である。これによってX$BH表のレコードとダ
ンプファイル内の各ブロック情報を対応づける。上記の例だとLRUリストの末
尾にリストされている。つまり、全件検索が行なわれたブロックである。
【注目5】フラグ
X$BH表のFALG列に対応する値である。このブロックが全件検索でシーケンシャ
ル・リードされたことを意味している。詳しくはバックナンバー(Oracle9iに
関する検証 その7)を見ていただきたい。
バッファの検証のやり方、みたいな内容になったがご参考までに。
以上、茅ヶ崎にて