トランザクション・マネージャーのログ・レコード

トランザクション・マネージャーは、トランザクション・イベント (例えば、コミットまたはロールバック) の完了を示すログ・レコードを生成します。 ログ・レコード内のタイム・スタンプは、協定世界時 (UTC) であり、1970 年 1 月 1 日から経過した時間 (秒単位) を示します。

通常コミットのログ・レコード

このログ・レコードは、単一ノード環境のトランザクションについて、あるいは複数ノード環境のトランザクションについて (そのトランザクションの影響を受けるのは 1 つのノードのみ) 書き込まれます。 このログ・レコードは、以下のイベントのいずれか 1 つに続く、トランザクションのコミット時に書き込まれます。

  1. ユーザーが COMMIT を発行した
  2. CONNECT RESET 中に暗黙のコミットが行われた
表 1. 通常コミットのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
トランザクションがコミットされた時刻 sqluint64 40 (8)
許可 ID の長さ 1 (ログ・レコードが伝搬可能とマークされている場合) unsigned short 48 (2)
アプリケーション1の許可 ID (ログ・レコードが伝搬可能とマークされている場合) 文字 [] 50 (可変2)
全長: 50 バイト + 伝搬可能な可変長部分 (伝搬不可能な 48 バイト)
注:
  1. ログ・レコードが伝搬可能としてマークされている場合
  2. 許可 ID の長さに基づく変数

ヒューリスティック・コミットのログ・レコード

このログ・レコードは、未確定トランザクションがコミットされるときに書き込まれます。

表 2. ヒューリスティック・コミットのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
トランザクションがコミットされた時刻 sqluint64 40 (8)
許可 ID の長さ 1 (ログ・レコードが伝搬可能とマークされている場合) unsigned short 48 (2)
アプリケーション1の許可 ID (ログ・レコードが伝搬可能とマークされている場合) 文字 [] 50 (可変2)
全長: 50 バイト + 伝搬可能な可変長部分 (伝搬不可能な 48 バイト)
注:
  1. ログ・レコードが伝搬可能としてマークされている場合
  2. 許可 ID の長さに基づく変数

MPP コーディネーター・コミットのログ・レコード

このログ・レコードは、少なくとも 1 つの従属ノードで更新を実行するアプリケーションについてコーディネーター・ノードに書き込まれます。

表 3. MPP コーディネーター・ノード・コミットのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
トランザクションがコミットされた時刻 sqluint64 40 (8)
トランザクションの MPP ID SQLP_GXID 48(20)
最大ノード番号 unsigned short 68 (2)
TNL unsigned char [ ] 70 (最大ノード番号/8 + 1)
許可 ID の長さ 1 (ログ・レコードが伝搬可能とマークされている場合) unsigned short 可変 (2)
アプリケーション1の許可 ID (ログ・レコードが伝搬可能とマークされている場合) 文字 [] 可変 (可変 2)
全長: 可変
注:
  1. トランザクションに関係していたコーディネーター・ノードを除き、ノードは TNL により定義されます。
  2. 許可 ID の長さに基づく変数

MPP 従属ノード・コミットのログ・レコード

このログ・レコードは、MPP 内の従属ノードで書き込まれます。

表 4. MPP 従属ノード・コミットのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
トランザクションがコミットされた時刻 sqluint64 40 (8)
トランザクションの MPP ID SQLP_GXID 48(20)
コーディネーター・パーティション番号1 unsigned short 68 (2)
許可 ID の長さ (ログ・レコードが伝搬可能とマークされている場合) unsigned short 70 (2)
アプリケーション 2 の許可 ID (ログ・レコードが伝搬可能とマークされている場合) 文字 [] 72 (可変3)
全長: 72 バイト + 可変長部分
注:
  1. トランザクションが単一のデータベース・パーティションのみで行われている場合、これは現在のデータベース・パーティション番号です。そうでない場合は、コーディネーター・パーティション番号です。
  2. ログ・レコードが伝搬可能としてマークされている場合
  3. 許可 ID の長さに基づく変数

通常打ち切りのログ・レコード

このログ・レコードは、以下のいずれかのイベントの後でトランザクションが打ち切られるときに書き込まれます。
  • ユーザーが ROLLBACK を発行した
  • デッドロックが発生した
  • クラッシュ・リカバリー中に暗黙的なロールバックが起こった
  • ROLLFORWARD リカバリー中に暗黙的なロールバックが起こった
表 5. 通常打ち切りのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
許可 ID の長さ 1 (ログ・レコードが伝搬可能とマークされている場合) unsigned short 40(2)
アプリケーション1の許可 ID (ログ・レコードが伝搬可能とマークされている場合) 文字 [] 42 (可変2)
全長: 42 バイト + 伝搬可能な可変長部分 (伝搬不可能な 40 バイト)
注:
  1. ログ・レコードが伝搬可能としてマークされている場合
  2. 許可 ID の長さに基づく変数

ヒューリスティック打ち切りのログ・レコード

このログ・レコードは、未確定トランザクションが打ち切られるときに書き込まれます。

表 6. ヒューリスティック打ち切りのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
許可 ID の長さ 1 (ログ・レコードが伝搬可能とマークされている場合) unsigned short 40(2)
アプリケーション1の許可 ID (ログ・レコードが伝搬可能とマークされている場合) 文字 [] 42 (可変2)
全長: 42 バイト + 伝搬可能な可変長部分 (伝搬不可能な 40 バイト)
注:
  1. ログ・レコードが伝搬可能としてマークされている場合
  2. 許可 ID の長さに基づく変数

ローカル・ペンディング・リストのログ・レコード

このログ・レコードは、トランザクションがコミットされるときに、ペンディング・リストが存在する場合に書き込まれます。 ペンディング・リストは、ユーザー/アプリケーションが COMMIT を発行するときにのみ実行できるリカバリー不能操作 (ファイルの削除など) のリンク・リストです。 この可変長構造には、ペンディング・リストの項目が含まれます。

表 7. ローカル・ペンディング・リストのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
トランザクションがコミットされた時刻 sqluint64 40 (8)
許可 ID の長さ 1 unsigned short 48 (2)
アプリケーションの許可 ID1 文字 [] 50 (可変)2
ペンディング・リストの項目 変数 可変 (可変)
全長: 50 バイト + 伝搬可能な可変長部分 (48 バイト + 伝搬不可能なペンディング・リスト項目)
注:
  1. ログ・レコードが伝搬可能としてマークされている場合
  2. 許可 ID の長さに基づく変数

グローバル・ペンディング・リストのログ・レコード

このログ・レコードは、2 フェーズ・コミットに必要なトランザクションがコミットされるときに、ペンディング・リストが存在する場合に書き込まれます。 ペンディング・リストには、ユーザー/アプリケーションが COMMIT を発行するときにのみ実行できるリカバリー不能操作 (ファイルの削除など) が含まれます。 この可変長構造には、ペンディング・リストの項目が含まれます。

表 8. グローバル・ペンディング・リストのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
許可 ID の長さ 1 unsigned short 40(2)
アプリケーションの許可 ID1 文字 [] 42 (可変)2
グローバル・ペンディング・リストの項目 変数 可変 (可変)
全長: 42 バイト + 伝搬可能な可変長部分 (40 バイト + 伝搬不可能なペンディング・リスト項目)
注:
  1. ログ・レコードが伝搬可能としてマークされている場合
  2. 許可 ID の長さに基づく変数

XA 準備のログ・レコード

このログ・レコードは、単一ノード環境にある XA トランザクションについて、あるいは MPP にあるコーディネーター・ノードに書き込まれます。 これは、XA アプリケーション専用です。 このログ・レコードは、トランザクションの準備を 2 フェーズ・コミットの一部としてマークするために書き込まれます。 XA 準備のログ・レコードは、トランザクションを開始したアプリケーションを記述し、未確定トランザクションの再作成に使用されます。

表 9. XA 準備のログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
トランザクションが準備された時刻 sqluint64 40 (8)
トランザクションによって使用されたログ・スペース sqluint64 48(8)
トランザクション・ノード・リストのサイズ sqluint32 56 (4)
トランザクション・ノード・リスト unsigned char [ ] 60 (可変)
予約 sqluint32 可変 (2)
トランザクションの XA ID SQLXA_XID 可変 (140)
同期ログ情報 変数 可変 (可変)
全長: 202 バイト + 可変長部分

MPP 従属ノード準備のログ・レコード

このログ・レコードは、従属ノード上の MPP トランザクションについて書き込まれます。 このログ・レコードは、トランザクションの準備を 2 フェーズ・コミットの一部としてマークするために書き込まれます。 MPP 従属ノード準備のログ・レコードは、トランザクションを開始したアプリケーションを記述し、未確定トランザクションの再作成に使用されます。

表 10. MPP 従属ノード準備のログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
トランザクションが準備された時刻 sqluint64 40 (8)
トランザクションによって使用されたログ・スペース sqluint64 48(8)
コーディネーター・ノード LSN db2LSN 56(8)
埋め込み 文字 [] 64 (2)
トランザクションの MPP ID SQLP_GXID 66(20)
全長: 86 バイト
注: 1.The SQLP-GXID ログ・レコードは、MPP 環境でトランザクションを識別するために使用されます。
表 11. SQLP-GXID 構造のフィールド
フィールド名 データ・タイプ 説明
FORMATID INTEGER GXID 形式 ID
GXID_LENGTH INTEGER GXID の長さ
BQAL_LENGTH INTEGER ブランチ ID の長さ
データ CHAR(8) 最初の 2 バイトはノード番号、残りはトランザクション ID

TM 準備のログ・レコード

このログ・レコードは、単一パーティション・データベース環境の Db2® 整合トランザクション、またはデータベースが TM データベースとして機能している MPP のコーディネーター・パーティションに書き込まれます。 このログ・レコードは、トランザクションの準備を 2 フェーズ・コミットの一部としてマークするために書き込まれます。

表 12. TM 準備のログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
トランザクションが準備された時刻 sqluint64 40 (8)
トランザクションによって使用されたログ・スペース sqluint64 48(8)
トランザクション・ノード・リストのサイズ sqluint32 56 (4)
トランザクション・ノード・リスト unsigned char [ ] 60 (可変)
予約 sqluint32 可変 (2)
トランザクションの XA ID SQLXA_XID 可変 (140)
同期ログ情報 変数 可変 (可変)
全長: 202 バイト + 可変長部分

バックアウト解放のログ・レコード

このログ・レコードは、バックアウト解放インターバルの終了をマークするために使用されます。 バックアウト解放インターバルは、トランザクションが打ち切られたときに補正されていないログ・レコードのセットです。 このログ・レコードには、8 バイトのログ・シーケンス番号 (complsn、オフセット 22 から始まるログ・レコード・ヘッダーに格納される) が含まれます。 特定のシナリオでは、バックアウト解放のログ・レコードにもログ・データが入ります。これはオフセット 30 で始まり、対応するデータ・マネージャー・ログ・レコードにログ記録されたデータと同じです。 このログ・レコードを (打ち切られたトランザクションの後の) ロールバック時に読み取ると、complsn が次に補正すべきログ・レコードをマークします。

表 13. バックアウト解放のログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
Complsn db2LSN 40 (8)
ログ・データ1 変数 変数
全長: 48 バイト + 可変長部分
注: 1.   該当するのは特定のシナリオに限られます。使用する場合は、ログ・ヘッダー内のログ・レコード全体の長さが 28 バイトを超えます。

アプリケーション情報のログ・レコード

このログ・レコードには、このトランザクションを開始したアプリケーションに関する情報が含まれています。

表. 14 アプリケーション情報のログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
トランザクションの開始時刻 sqluint32 40 (4)
予約済み 文字 [] 44 (16)
コード・ページ sqluint32 60 (4)
アプリケーション名の長さ sqluint32 64 (4)
アプリケーション名 文字 [] 68 (可変)
アプリケーション ID の長さ sqluint32 可変 (4)
アプリケーション ID 文字 [] 可変 (可変)
シーケンス番号の長さ sqluint32 可変 (4)
シーケンス番号 文字 [] 可変 (可変)
クライアントによって使用されたデータベース別名の長さ sqluint32 可変 (4)
クライアントによって使用されたデータベース別名 文字 [] 可変 (可変)
許可 ID の長さ sqluint32 可変 (4)
許可 ID 文字 [] 可変 (可変)
全長: 84 バイト + 可変長部分

フェデレーテッド準備のログ・レコード

このログ・レコードには、トランザクションに関与したフェデレーテッド・リソース・マネージャーに関する情報が含まれています。

表 15. フェデレーテッド準備のログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
リソース・マネージャーの数 sqluint32 40 (4)
許可 ID の長さ sqluint16 44 (2)
暗号化されたパスワードの長さ sqluint16 46 (2)
許可 ID char [128] 48 (128)
暗号化されたパスワード char [263] 176 (263)
リソース・マネージャー項目 変数 439 (可変)
全長: 439 バイト + 可変長部分

タイム・スタンプのログ・レコード

このログ・レコードには、ポイント・イン・タイム・リカバリーに使用できるタイム・スタンプが含まれています。

表 16. タイム・スタンプのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
タイム・スタンプ sqluint64 40 (8)
全長: 48 バイト

サブトランザクションのログ・レコード

このログ・レコードは、追加のトランザクション ID を使用して変更を追跡管理するトランザクション T1 に関して書き込まれます。 そのトランザクション ID を使用する後続のログ・レコードは、トランザクション T1 の一部なので、別のトランザクションと見なすべきではありません。 その追加のトランザクション ID を使用してコミットやアボートのログ・レコードは書き込まれることはありません。 1 つのトランザクションに対して複数のサブトランザクション・ログ・レコードが存在する場合もあります。 そのログ・レコードは、1 つのトランザクションによる変更を複数のスレッドで実行する場合に使用され、スレッドごとに別々のサブトランザクション ID で変更がログに記録されます。

表 17. サブトランザクションのログ・レコードの構造
説明 タイプ オフセット (バイト)
ログ・ヘッダー LogManagerLogRecordHeader 0 (40)
サブトランザクション ID SQLU_TID 40 (6)
全長: 46 バイト