
ITL - 日本エクセム株式会社 Oracle 技術情報
目次[非表示]
基本情報
Interested Transaction List
ブロックに発生させた一つのTransactionあたり、Block HeaderにTransactionエントリがListの形で管理される既に説明しました。Header内部、Transaction情報を管理するList自体をITL、つまり、Interested Transaction Listと言います。Block HeaderのITL内部には、それぞれのTransaction Entryが、内部には、Transaction自体の情報、Row Before情報を持っているUndo SegmentまたはRollback Segment関連情報、TransactionのCommitかどうか、ブロック内にRow Level LockがかかったRow数、Transaction完了時のSCN情報のものが含まれています。Block内Rowは、このITLの一つのEntryとの関係を示します。この部分については、例を使って詳しく説明します。
以下は、Block Dumpを通じたITL情報を見た場合です。
上記ITL情報それぞれをスロット別に分析すると、次の通りとなります。
1)ITL Slot0x01:既にCommitされたTransactionのSlotです。トランザクションがSlotを使用した後、Commitをしたことを表します。Flagの値「C-」にCommitされたことが分かり、トランザクションの完了時点のscnは「0x0000.00081ac7」となります。ただし、Transactionの変更されたRowのBefore イメージを参照するRowがある場合もあります。この時には、UBAとSCN情報を利用して下さい。
2)ITL Slot0x02:現在進行中のTransactionのSlotです。関連XID情報とV$ TRANSACTION情報の組み合わせで進行中のトランザクションの詳細を知ることができます。LCK値が「14」なので、ブロックの合計14個のRowにLockをかけたことがわかります。
3)ITL Slow0x03:このSlotには、すべての値が「0」に設定されています。これが意味するのは、次の2つのうち一つです。
実際のTransactionは、複数のBlockを変更するので、それぞれは、複数のITL Slotとの関係を結ぶことができます。関係を結ぶことができるITLはテーブルData Blockを基準に見たとき、全体のBlock数だけになります。しかし、実際に影響を及ぼしたRowにインデックスがある場合は、インデックスBlockのITL Slotとの関連付けを結ぶことになるのです。従って、インデックスが多くのテーブルに対してインデックス列の変更がある場合、はるかに多くのBlockのITL Slotとの関連付けを結ぶことになります。