株式会社インサイトテクノロジー 発行
http://www.insight-tec.com/jp/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Vol.50
☆★☆ おら!オラ! Oracle −どっぷり検証生活− ☆★☆
2001.04.04
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<<目次>>
■Oracle検証生活・・・ロールバック・セグメントに関する検証 その6
■お知らせ・・・○Oracle管理ツール Performance Insight
○SQeeLのご案内 ○連載情報
○書籍ご購入受付中 ○QAについて
■編集者より(UA引退)
■■注意事項!!■■
本文中にテーブルが含まれていますので、お読みになる際はMSゴシック等、
等幅フォントをお使いただくことをお勧めします。
★本日の検証生活にはダンプリストが含まれています。
ダンプリストは1行あたりが長いため、メールソフトによっては
見づらいかもしれません。悪しからずご了承ください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
〜ロールバック・セグメントに関する検証 その6〜
ペンネーム ちゃむ
前回は、トランザクション表(TRN TBL)の実態をブロックダンプより確認した。
今回は、トランザクション表、ロールバック・セグメントのデータブロック
(undoブロック)、表などのデータブロック中に存在するITL
(INTERESTED TRANSACTION LIST)の関係に迫ってみる。
トランザクション表とUNDO BLOCKは、今まで見てきたのでわかると思うが、
ITLとはなんであろうか?
例えば、表のデータなどを更新した後、他のセッション等から、そのデータブ
ロックを取得するSELECT文を発行したときに、コミット前であれば読み取り一
貫性を実現するために、更新前の情報、つまりロールバック・セグメントに格
納してあるUNDOブロック情報を取得する必要がある。だから、このITLには、
トランザクション表とUNDOブロックの場所を識別するための情報が格納される。
また、実際に「ROLLBACK ;」のコマンドが発行されたときも、このITLの情報を
もとにUNDOブロックの場所を特定して、更新前の値に戻すことができる。
このあたりの内容は、ロックとも非常に関連が深いが、ロックに関する詳しい
内容は、別の機会で検証しようと思う。
関係図を以下のURLに示す。
http://www.insight-tec.com/html/reference/ref50.html
-----------------------テーブルのデータブロックダンプの抜粋(ダンプ1)-----------------------
Start dump data blocks tsn: 3 file#: 4 minblk 61826 maxblk 61826
buffer tsn: 3 rdba: 0x0100f182 (4/61826)
scn: 0x0000.00ed6bc1 seq: 0x0c flg: 0x00 tail: 0x6bc1060c
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x0100f182
Object id on Block? Y
seg/obj: 0x1548 csc: 0x00.ed6b7a itc: 1 flg: O typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01
Itl Xid Uba Flag Lck Scn/Fsc
0x01 xid: 0x0009.000.0000005b uba: 0x00800298.010d.0c ---- 12 fsc 0x000c.00000000
---------------------------------------------------------------------------------------------
上記ダンプ1のXid=0x0009.000.0000005b (16進数で表現されている)は、
左から順に、「ロールバック・セグメントの番号」、「スロット番号」、「順序番号」
であるが、下記ダンプ2のstate=10のindex=「スロット番号」、wrap#=「順序番号」
に一致する。
「ロールバック・セグメントの番号」は、
set transaction use rollback segment rb_find50 ;で指定したロールバック・
セグメントなので、以下のSQL文の結果のSEGMENT_IDの値と一致する。
SQL> select segment_id from DBA_ROLLBACK_SEGS where segment_name = 'RB_FIND50' ;
SEGMENT_ID
----------
9 ← Xid=0x0009と一致する
上記ダンプ1のUba=0x00800298は、
下記ダンプ2のTRN TBLのdba=0x00800298に一致する。
上記ダンプ1のscn: 0x0000.00ed6bc1は、
下記ダンプ2のTRN TBLのscn=0x0000.00ed6bc1に一致する。
これらより、テーブルのデータブロックのITLからロールバック・セグメントの
場所を特定できる様子がわかるであろう。つまり、これらが「読み取り一貫性」
と「ROLLBACK」を実現するための元データとなる。
-------------------トランザクション表「TRN TBL」ブロックダンプの抜粋(ダンプ2)------------------
Start dump data blocks tsn: 1 file#: 2 minblk 662 maxblk 662
buffer tsn: 1 rdba: 0x00800296 (2/662)
scn: 0x0000.00ed6bc1 seq: 0x01 flg: 0x00 tail: 0x6bc10e01
frmt: 0x02 chkval: 0x0000 type: 0x0e=KTU UNDO HEADER W/UNLIMITED EXTENTS
.......................................................................................
TRN TBL::
index state cflags wrap# uel scn dba parent-xid nub
------------------------------------------------------------------------------------------------
0x00 10 0xc0 0x005b 0x0000 0x0000.00ed6bc1 0x00800298 0x0000.000.00000000 0x00000001
0x01 9 0x00 0x005a 0x0002 0x0000.00ed6b83 0x00000000 0x0000.000.00000000 0x00000000
..................................................................................................
0x13 9 0x00 0x005a 0x0014 0x0000.00ed6b83 0x00000000 0x0000.000.00000000 0x00000000
0x14 9 0x00 0x005a 0xffff 0x0000.00ed6b83 0x00000000 0x0000.000.00000000 0x00000000
--------------------------------------------------------------------------------------------------
上記ダンプ1、2のxid: 0x0009.000.0000005bは、
下記ダンプ3のxid: 0x0009.000.0000005bに一致する。
上記ダンプ1、2のscnは、
下記ダンプ3のscn: 0x0000.00ed6bc1と一致する。
ダンプ3のcol 1: [ 5] 53 4d 49 54 48は、まさに更新前のカラムの値である。
------------------UNDOブロックのブロックダンプの抜粋(ダンプ3)---------------------
Start dump data blocks tsn: 1 file#: 2 minblk 664 maxblk 664
buffer tsn: 1 rdba: 0x00800298 (2/664)
scn: 0x0000.00ed6bc1 seq: 0x0d flg: 0x00 tail: 0x6bc1020d
frmt: 0x02 chkval: 0x0000 type: 0x02=KTU UNDO BLOCK
********************************************************************************
UNDO BLK:
xid: 0x0009.000.0000005b seq: 0x10d cnt: 0xc irb: 0xc icl: 0x0 flg: 0x0000
Rec Offset Rec Offset Rec Offset Rec Offset Rec Offset
---------------------------------------------------------------------------
0x01 0x077c 0x02 0x0720 0x03 0x06c8 0x04 0x066c 0x05 0x0610
0x06 0x05b4 0x07 0x0558 0x08 0x0500 0x09 0x04a4 0x0a 0x0448
0x0b 0x03f0 0x0c 0x0394
*-----------------------------
* Rec #0x1 slt: 0x00 objn: 5448(0x00001548) objd: 5448 tblspc: 3(0x00000003)
* Layer: 11 (Row) opc: 1 rci 0x00
Undo type: Regular undo Begin trans Last buffer split: No
Temp Object: No
Tablespace Undo: No
rdba: 0x00000000
*-----------------------------
uba: 0x00000000.0000.00 ctl max scn: 0x0000.00ed6b83 prv tx scn: 0x0000.00ed6b83
KDO undo record:
KTB Redo
op: 0x03 ver: 0x01
op: Z
KDO Op code: URP xtype: XA bdba: 0x0100f182 hdba: 0x0100f181
itli: 1 ispac: 0 maxfr: 1177
tabn: 0 slot: 0(0x0) flag: 0x2c lock: 0 ckix: 0
ncol: 8 nnew: 1 size: 1
col 1: [ 5] 53 4d 49 54 48
-------------------------------------------------------------------------------------
今回の内容は、ダンプばかりではあったが、これらの関係をしっかり抑えるこ
とで、より深くトランザクションの仕組みが理解できるはずである。
次回は、読み取り一貫性の仕組みについて、これらの知識を踏まえて説明する。
以上 BOSEのスピーカーっていい音出るよね。 茅ヶ崎にて
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
↓発進!茅ヶ崎移住計画↓
http://www.insight-tec.com/jp/company/career.html
◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle 管理ツール Performance Insight ▼━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Oracleを知り尽くしたメンバーが開発したOracleパフォーマンス監視ツール
の決定版。それがPerformance Insightです。インサイトテクノロジーの技術
者の知恵とノウハウがここに結集!
パフォーマンス監視だけでなくOracleを使用しているシステムの運用、管理、
そして開発にも役立つ機能がいっぱいです。
詳しくは以下のURLをご覧ください。
http://www.insight-tec.com/jp/products/products.html
また無料で試使用することも可能です。
是非お問い合わせください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ SQeeLのご案内 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<プログラマ待望の言語SQeeL>
●手軽に使える、速い、そしてWEBに適した新言語SQeeL!
フリーソフトSQeeLは、以下のURLより好評ダウンロード中!
既に多くの方々にご利用いただいております。
あなたもSQeeLの世界を体験してみませんか?
http://www.SQeeL.org/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 連載情報 ▼━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<雑誌連載>
Oracleのエキスパートとして定評のある弊社のスタッフが執筆しております
連載記事に関してご紹介しています。
現在「DB Magazine」に、Oracleビギナー向け連載が掲載されています。
5月号が発売中ですので、是非ご覧下さい。
http://www.insight-tec.com/jp/topics/magazine.html
上記のURLでタイトルがご覧になれます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 書籍ご予約受付中 ▼━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<送料無料でお届けします>
1.「Oracle8 プロフェッショナルテクニック」
弊社のHPよりお申し込みいただいた方に限り、送料無料でお届けします。
専門書としては異例の速さで増刷が決定するほどの好評をいただいている
「Oracle8 プロフェッショナルテクニック」をぜひご活用ください。
2.「Oracleデータベース管理を極める13章」
「DB Magazine」に連載され大好評だった「体験的・DBAのお仕事」が
加筆され書籍化された同書は、おかげさまで発売以来3ヶ月足らずで第3刷
となりました。
好評につき、キャンペーンを拡大いたしました!上記の書籍はいずれも
消費税サービス+送料無料、つまり本体価格のみでご購入いただけます。
この機会をお見逃し無く。
さらに書籍をお買い上げいただいた方にはもれなく「Oracleの知恵袋」進呈中!
数に限りがございますので、在庫がなくなり次第終了とさせていただきます。
お早めに!
書籍ご購入のお申し込みは以下のURLより受付中!
http://www.insight-tec.com/jp/topics/books.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ QAについて ▼━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<皆様からのQAを受付けております>
皆様のQAにはできるだけ、お答えしたいと思っています。
すべてのQAにお答えすることはできないかもしれませんが、
適宜メルマガ内でとりあげていく予定ですので、是非QAをお寄せください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 編集者より ▼━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
早いもので、このメルマガも創刊1周年!50号を迎えることができました。
さて、1年間このコーナーでとりとめもないことを書き綴ってきましたが、
ちょうど節目ということもあり、今回を持ちまして後輩にバトンタッチさせ
ていただくことになりました。今まで本当にありがとうございました。今後
とも当メルマガをよろしくお願いいたします。 by UA
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録・解除は以下のURLで行うことができます。
http://www.insight-tec.com/jp/em/mail_magazine.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<おら!オラ!Oracle−どっぷり検証生活−>
発行/編集:株式会社インサイトテクノロジー
http://www.insight-tec.com/jp
マガジンID:0000030093
本メールマガジンに掲載された記事を許可なく転載することを禁じます。
Copyright (c) 1996-2001 , Insight Technology, Inc. All rights reserved.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━