LogDumpユーティリティを使用した証跡ファイル・レコードへのアクセス
トラブルシューティングおよび技術サポートには、Oracle GoldenGateの証跡情報が必要です。Logdumpユーティリティを使用して、Oracle GoldenGate証跡レコードを表示します。
証跡リカバリ・モード
デフォルトでは、Extractは追加モードで動作します。このモードでは、プロセス障害が発生すると証跡にリカバリ・マーカーが書き込まれ、Extractは、すべての古いデータの履歴をリカバリ目的で保持するために、ファイルにリカバリ・データを追加します。
追加モードでは、Extractの初期化によって、起動時に証跡に書き込まれた最後の完全なトランザクションのIDが判別されます。この情報に基づいて、Extractは、そのトランザクションのコミット・レコードがデータソースで見つかると、リカバリを停止します。その後、Extractは、抽出要件を満たす次のコミット済トランザクションから新しいデータ取得を開始し、新しいデータの証跡への追加を始めます。Replicatは、このリカバリ・ポイントから読取りを再開します。
上書きモードは、Oracle GoldenGateリリース10.0以前のリリースで使用されていたもう1つのExtractリカバリ方法です。これらのリリースでは、Extractは、新規データを追加するかわりに、最後の書込みチェックポイント位置の後にある証跡の既存のトランザクション・データを上書きします。書き込まれる最初のトランザクションは、データソースの最後の読取りチェックポイント位置の後にある、抽出要件を満たす最初のトランザクションです。
ターゲットのOracle GoldenGateのリリースがリリース10より古い場合、Extractは、下位互換性をサポートするために自動的に上書きモードに戻ります。この動作は、RECOVERYOPTIONSパラメータを使用して手動で制御できます。
証跡のレコード形式
Oracle GoldenGateによって証跡またはExtractファイルに書き込まれる各変更レコードには、ヘッダー領域、データ領域および場合によってはユーザー・トークン領域が含まれます。レコード・ヘッダーには、トランザクション環境に関する情報が含まれ、データ領域には、抽出された実際のデータ値が含まれます。
トークン領域には、Oracle GoldenGateユーザーが列のマッピングおよび変換用に指定した情報が含まれます。
Oracle GoldenGateの証跡ファイルは構造化されていません。Oracle GoldenGateレコードは、Oracle GoldenGateソフトウェアに付属するログダンプ・ユーティリティを使用して表示できます。詳細は、『Oracle GoldenGateのためのLogdumpリファレンス』の最初のレコードの表示を参照してください。
ノート:
Oracle GoldenGateソフトウェアの機能拡張のために、証跡レコードの形式は、このドキュメントに記載されていない変更に応じて修正される可能性があります。現在の構造を表示するには、ログダンプ・ユーティリティを使用してください。証跡ファイルのヘッダー・レコード
証跡の各ファイルの先頭部分に、ファイル・ヘッダー・レコードが格納されています。ファイル・ヘッダーには、証跡ファイル自体に関する情報が含まれます。以前のリリースのOracle GoldenGateには、このヘッダーは含まれません。
ファイル・ヘッダーは、データ・レコードに先行する証跡ファイルの先頭部分にレコードとして格納されます。証跡のヘッダーに格納されているレコードに関する情報によって、Oracle GoldenGateプロセスは、各レコードがOracle GoldenGateの現行リリースでサポートされる形式であるかどうかを判断できます。
証跡ヘッダー・フィールドはトークンとして格納されます。トークンの形式はOracle GoldenGateのすべてのバージョンで同じです。Oracle GoldenGateのあるバージョンで与えられたトークンがサポートされない場合、そのトークンは無視されます。非推奨のトークンには、Oracle GoldenGateの以前のバージョンとの互換性が保たれるようデフォルト値が割り当てられます。
Oracle GoldenGateの異なるプロセス・バージョン間でファイルの上位互換性または下位互換性を保証するため、標準化されたトークン形式でファイル・ヘッダー・フィールドが書き込まれます。プロセスの新規バージョンによって作成される新しいトークンは、古いバージョンでは無視されるため、下位互換性が保持されます。同様に、Oracle GoldenGateの新しいバージョンでは、古いトークンがサポートされます。また、新しいプロセス・バージョンによってあるトークンが非推奨になっても、そのトークンにはデフォルト値が割り当てられるため、古いバージョンも引き続き正しく動作します。ファイル・バージョンを指定するトークンは、COMPATIBILITYです。このトークンは、ログダンプ・ユーティリティで表示することや、@GETENV関数のGGFILEHEADERオプションを使用して取得することができます。
証跡またはExtractファイルのバージョンは、そのファイルを読み取るプロセスのバージョン以下である必要があります。それ以外の場合、プロセスは異常終了します。また、Oracle GoldenGateでは、出力証跡が入力証跡またはファイルと同じバージョンになります。再起動時に、Extractは、各ファイルのバージョンがただ1つになるように証跡を1つの新規ファイルにまとめます(ファイルが空ではない場合)。
Oracle GoldenGate 21c以降、Oracleデータベースの場合は、DB_UNIQUE_NAMEパラメータを使用してデータベースのグローバルに一意の名前を指定できます。このデータベース・パラメータが設定されていない場合、DB_UNIQUE_NAMEはDB_NAMEと同じです。この機能では、証跡ファイル・ヘッダーを表示することで、証跡データのソースを一意に識別できます。
DbUniqueNameトークンの使用の詳細は、GETENVパラメータを参照してください。
DbUniqueNameトークンは19.1互換性レベルで証跡ファイルに書き込まれますが、その互換性レベルをサポートする以前のOracle GoldenGateリリースでは、新しいトークンは無視されます。トークンは、データベース情報グループに属します。DB_UNIQUE_NAMEの可能なすべての値を30文字に制限して収めることができるように、このフィールドは65536バイトに制限されます。
Oracle GoldenGateプロセスは独立しており、異なるOracle GoldenGateリリースのプロセスが混在できるため、各証跡ファイルのファイル・ヘッダーにはバージョン・インジケータが含まれています。デフォルトでは、証跡ファイルのバージョンは、そのファイルを作成したプロセスの現行バージョンです。証跡のバージョンを設定する必要がある場合、EXTTRAIL、EXTFILE、RMTTRAILまたはRMTFILEパラメータのFORMATオプションを使用します。
証跡のヘッダーは、ログダンプ・ユーティリティのFILEHEADERコマンドを使用して表示できます。ファイル・ヘッダーのトークンの詳細は、Oracle GoldenGateログダンプ・リファレンスを参照してください。
証跡ファイル・ヘッダーのパーティション名レコード
証跡ファイル・ヘッダーの各DMLレコードには、パーティション名レコード(PNR)への索引を含めることができます。完全なパーティション名は長くなる可能性があるため、PNRは、パーティションの初回書込み時に各証跡ファイルに作成されます。各PNRには、パーティション名とパーティション・オブジェクトIDが含まれます。
プライマリExtractの場合、PNRはパーティション一致に対してのみ生成され、PARTITIONおよびPARTITIONEXCLUDEパラメータによって含められます。これらのパーティションのDMLレコードには、表定義レコードへの索引と、パーティション名レコードへの別の索引があります。他のすべての表(パーティション化されていない表や、PARTITIONまたはPARTITIONEXCLUDEパラメータで一致しない、または除外されていないパーティション化された表など)からのDMLレコードには、現在行われているように表定義レコードへの索引のみがあります。Distribution Serviceの場合、ソース証跡レコードにPNR索引が含まれていると、PNRが書き込まれます。
Logdumpでのパーティション名およびPNR索引の表示
Logdumpユーティリティを使用して、パーティション名レコードと、PNR索引を含むDMLを表示します。
$ logdump > output.txt <<EOF ghdr on detail data open ./dirdat/tr000000000 n 200 EOF
次の例に示すように、PNRと、PNR索引値を持つDMLが出力に表示されます。
HDR-IND : E (X45) PARTITION : . (XFF80) UNDOFLAG : . (X00) BEFOREAFTER: A (X41) RECLENGTH : 0 (X0000) IO TIME : 2019/01/17 16:48:01.129.045 IOTYPE : 170 (XAA) ORIGNODE : 4 (X04) TRANSIND : . (X03) FORMATTYPE : R (X52) SYSKEYLEN : 0 (X00) INCOMPLETE : . (X00) TDR/PNR IDX: (001, 002) AUDITPOS : 13287580 CONTINUED : N (X00) RECCOUNT : 1 (X01) 2019/01/17 16:48:01.129.045 METADATA LEN 0 RBA 3425 PARTITION NAME: P1 PARTITION ID: 75,234 FLAGS: X00000001 ___________________________________________________________________ HDR-IND : E (X45) PARTITION : . (XFF8C) UNDOFLAG : . (X00) BEFOREAFTER: A (X41) RECLENGTH : 18 (X0012) IO TIME : 2019/01/17 16:47:58.000.000 IOTYPE : 5 (X05) ORIGNODE : 255 (XFF) TRANSIND : . (X00) FORMATTYPE : R (X52) SYSKEYLEN : 0 (X00) INCOMPLETE : . (X00) AUDITRBA : 15 AUDITPOS : 13287580 CONTINUED : N (X00) RECCOUNT : 1 (X01) 2019/01/17 16:47:58.000.000 INSERT LEN 18 RBA 3486 NAME: TKGGU1.T1 (PARTITION: P1, TDR/PNR INDEX: 1/2) AFTER IMAGE: PARTITION X8C G B 0000 0500 0000 0100 3101 0005 0000 0001 0031 | ........1........1 COLUMN 0 (X0000), LEN 5 (X0005) 0000 0100 31 | ....1 COLUMN 1 (X0001), LEN 5 (X0005) 0000 0100 31 | ....1
Oracle GoldenGateレコードの例
図13-1 Oracle GoldenGateレコードの例

レコード・ヘッダー領域
Oracle GoldenGateレコードのヘッダーには、レコードに格納されているデータのメタデータがあり、次の情報が含まれます。
-
挿入、更新、削除などの操作タイプ
-
更新の前または後を示すインジケータ
-
トランザクション・グループやコミット・タイムスタンプなどのトランザクション情報
ヘッダー・フィールドの説明
表: GoldenGateレコードのヘッダー・フィールド
| フィールド | 説明 |
|---|---|
|
この値は常にEである必要があり、レコードがExtractプロセスによって作成されたことを示します。それ以外のすべての値は、無効なデータであることを示します。 |
|
レコード・バッファの長さ(バイト単位)。 |
|
レコードにより表される操作のタイプ。操作タイプのリストは、表13-*を参照してください。 |
|
現在のトランザクション内におけるレコードの位置。値: 0 — トランザクションの最初のレコード 1 — トランザクションの最初と最後以外のレコード 2 — トランザクションの最後のレコード 3 — トランザクションの唯一のレコード |
|
Oracle REDOログ順序番号などのトランザクション・ログ識別子を識別します。 |
|
(WindowsおよびUNIX)レコードが、大きすぎて1つのレコードに収まらないより大きなデータの1セグメントであるかどうかを示します。LOB、CLOBSおよび一部のVARCHARはセグメントに格納されます。( Y — レコードはセグメントです。Oracle GoldenGateにこのデータが別のレコードに続いていることを示します。 N — データは別のセグメントに続いていません。一連のデータの最後の部分であるか、より大きなデータのセグメントではないレコードです。 |
|
WindowsおよびUNIXのレコードの場合、このフィールドの値は常に4(内部形式におけるFieldComp圧縮レコード)です。これらのプラットフォームでは、Partitionという語は、データがデータベース構造内の特定の論理パーティションまたは物理パーティションであることを示しているわけではありません。 |
|
レコードが更新操作の変更前(B)イメージまたは変更後(A)イメージのどちらであるかを示します。UPDATERECORDFORMATパラメータの結果として変更前イメージと変更後イメージの両方を組み合せるレコードは、変更後イメージとしてマークされます。挿入は常に変更後イメージであり、削除は常に変更前イメージです。
|
|
操作が発生した、ソース・システムのローカル時刻での時間(GMT形式)。この時間は、操作が発生した場合に応じてトランザクションの各操作で同じである場合も異なる場合もあります。 |
|
データがトランザクション・ログから読み取られたか、データベースからフェッチされたかを示します。 F — データベースからのフェッチR — トランザクション・ログからの読取り |
|
このフィールドは現在使用されていません。 |
|
データのトランザクション・ログでの位置を識別します。 |
|
(WindowsおよびUNIX) Oracle GoldenGateファイルに書き込むためにLOBデータをチャンクに分割する必要がある場合に使用されます。RecCountは、チャンクを再構築するために使用されます。 |
ヘッダー・データの使用
@GETENV関数のGGHEADERオプションを使用することによって、またはTABLEやMAPパラメータのCOLMAP文内でソース式として次のトランザクション要素のいずれかを使用することによって、Oracle GoldenGateレコード・ヘッダーで使用可能なデータの一部をマッピングに使用できます。
-
GGS_TRANS_TIMESTAMP -
GGS_TRANS_RBA -
GGS_OP_TYPE -
GGS_BEFORE_AFTER_IND
レコード・データ領域
Oracle GoldenGate証跡レコードのデータ領域には、次のデータが含まれます。
- 変更がOracle GoldenGateファイルに書き込まれた時刻
- データベース操作のタイプ
- レコードの長さ
- 証跡ファイル内の相対バイト・アドレス
- 表名
- 16進形式のデータ変更
次に、Windows、UNIX、LinuxおよびNonStopシステムのOracle GoldenGateによって使用されるレコード・イメージ形式の相違点について説明します。
完全レコード・イメージ形式(NonStopソース)
完全レコード・イメージには、処理される行のすべての列の値が含まれます。完全レコード・イメージ形式は、ソース・システムがHP NonStopで、レコード・ヘッダーに指定されているIOTypeが次のいずれかである場合にのみ証跡に生成されます。
3 — Delete 5 — Insert 10 — Update
それぞれの完全レコード・イメージの形式は、そのレコードが元のファイルまたは表を直接読み取るプログラムから取得された場合と同じです。SQL表、日時フィールド、NULLなどのデータは、プログラムがそのデータをアプリケーション・バッファに選択する場合とまったく同じように書き込まれます。日時フィールドは内部的に8バイトのタイムスタンプとして表現されますが、外部形式は最大26バイトの文字列として表現可能です。Enscribeレコードは、元のファイルに存在するとおりの形式で取得されます。
操作タイプがInsertまたはUpdateの場合、イメージには操作後のレコードの内容が含まれます(変更後イメージ)。操作タイプがDeleteの場合、イメージには操作前のレコードの内容が含まれます(変更前イメージ)。
Enscribeデータベースから生成されるレコードでは、元のファイルのAUDITCOMPRESS属性がONに設定されていなければ、完全レコード・イメージが出力されます。AUDITCOMPRESSがONの場合、元のファイルによって更新操作が取得されると、常に圧縮更新レコードが生成されます。(完全イメージは、FETCHCOMPSパラメータを使用することで、Extractプロセスによって取得できます。)
圧縮レコード・イメージ形式(Windows、UNIX、Linuxソース)
圧縮レコード・イメージには、処理される行で変更されたキー(主、一意、KEYCOLS)および列のみが含まれます。デフォルトでは、WindowsおよびUNIXシステムのプロセスによって書き込まれる証跡レコードは、常に圧縮されます。
圧縮レコードの形式は次のとおりです。
column_index
column_length
column_data[...]
説明:
-
は、ソース表内の列の序数索引です(2バイト)。column_index
は、データの長さ(2バイト)です。colum_length
はcolumn_data
またはNULL
長さインジケータを含むデータです。VARCHAR
field_offset
field_length field_value[...]説明:
-
は、変更された値(2バイト)の元のレコード内のオフセットです。field_offset
は、データの長さ(2バイト)です。field_length
はfield_value
またはNULL
長さインジケータを含むデータです。VARCHAR
圧縮Enscribeレコードの最初のフィールドは、主キーまたはシステム・キーです。
トークン領域
証跡レコードには、2つのトークン領域も含まれることがあります。1つは内部使用を目的としており、ここでは説明しません。もう1つはユーザー・トークン領域です。ユーザー・トークンは、ターゲット列へのレプリケーションまたは他の目的のために取得されて証跡レコードに格納される環境値です。使用される場合、これらのトークンはレコードのデータ部分の後に続き、ログダンプで確認すると次のように表示されます。
| パラメータ | 値 |
|---|---|
TKN-HOST TKN-GROUP TKN-BA_IND TKN-COMMIT_TS TKN-POS TKN-RBA TKN-TABLE TKN-OPTYPE TKN-LENGTH TKN-TRAN_IND |
: syshq : EXTORA : AFTER : 2011-01-24 17:08:59.000000 : 3604496 : 4058 : SOURCE.CUSTOMER : INSERT : 57 : BEGIN |
Oracle GoldenGateの操作タイプ
次に、Oracle GoldenGateの操作タイプの一部を示します。Oracle GoldenGateに新機能が追加されると、タイプが追加されることがあります。最新のリストを確認するには、ログダンプ・ユーティリティのSHOW RECTYPEコマンドを使用します。
| タイプ | 説明 | プラットフォーム |
|---|---|---|
| 1-Abort | トランザクションが中断されました。 | NSK TMF |
| 2-Commit | トランザクションがコミットされました。 | NSK TMF |
| 3-Delete | レコードまたは行が削除されました。Deleteレコードには、通常、完全レコード・イメージが含まれます。ただし、COMPRESSDELETESパラメータが使用されている場合は、キー列のみが示されます。
|
すべて |
| 4-EndRollback | データベース・ロールバックが終了しました。 | NSK TMF |
| 5-Insert | レコードまたは行が挿入されました。Insertレコードには、完全レコード・イメージが含まれます。
|
すべて |
| 6-Prepared | ネットワーク・トランザクションのコミット準備が完了しました。 | NSK TMF |
| 7-TMF-Shutdown | TMFが停止しました。 | NSK TMF |
| 8-TransBegin | 現在使用されていません。 | NSK TMF |
| 9-TransRelease | 現在使用されていません。 | NSK TMF |
| 10-Update | レコードまたは行が更新されました。Updateレコードには、完全レコード・イメージが含まれます。ノート: レコード・ヘッダーのパーティション・インジケータが4の場合、そのレコードはFieldComp形式(後述を参照)であり、更新は圧縮されています。
|
すべて |
| 11-UpdateComp | TMF AuditComp形式のレコードまたは行が更新されました。この形式では、変更されたバイトのみが示されます。2-byte_offset2-byte_length形式の4バイトの記述子が、各データ・フラグメントの先頭に配置されます。byte offsetは、ソース表内の列の序数索引です。lengthはデータの長さです。
|
NSK TMF |
| 12-FileAlter | データベース・ファイルの属性が変更されました。 | NSK |
| 13-FileCreate | データベース・ファイルが作成されました。 | NSK |
| 14-FilePurge | データベース・ファイルが削除されました。 | NSK |
| 15-FieldComp | SQL表の行が更新されました。この形式では、変更されたバイトのみが示されます。変更されていない列の変更前イメージは、データベースでは記録されません。2-byte_offset2-byte_length形式の4バイトの記述子が、各データ・フラグメントの先頭に配置されます。byte offsetは、ソース表内の列の序数索引です。lengthはデータの長さです。レコード・ヘッダーのパーティション・インジケータの4は、FieldComp形式を示します。
|
すべて |
| 16-FileRename | ファイル名が変更されました。 | NSK |
| 17-AuxPointer | 新規データを保持するAUX証跡および読取りを開始する場所に関する情報が含まれます。 | NSK TMF |
| 18-NetworkCommit | ネットワーク・トランザクションがコミットされました。 | NSK TMF |
| 19-NetworkAbort | ネットワーク・トランザクションが中断されました。 | NSK TMF |
| 90-(GGS)SQLCol | SQL表に1つ以上の列が追加されたか、属性が変更されました。 | NSK |
| 100-(GGS)Purgedata | ファイルからすべてのデータが削除されました(PURGEDATA)。
|
NSK |
| 101-(GGS)Purge(File) | ファイルが消去されました。 | NSK非TMF |
| 102-(GGS)Create(File) | ファイルが作成されました。Oracle GoldenGateレコードには、ファイル属性が含まれます。 | NSK非TMF |
| 103-(GGS)Alter(File) | ファイルが変更されました。Oracle GoldenGateレコードには、変更されたファイル属性が含まれます。 | NSK非TMF |
| 104-(GGS)Rename(File) | ファイル名が変更されました。Oracle GoldenGateレコードには、元の名前と新しい名前が含まれます。 | NSK非TMF |
| 105-(GGS)Setmode | SETMODE操作が実行されました。Oracle GoldenGateレコードには、SETMODE情報が含まれます。
|
NSK非TMF |
| 106-GGSChangeLabel | CHANGELABEL操作が実行されました。Oracle GoldenGateレコードには、CHANGELABEL情報が含まれます。
|
NSK非TMF |
| 107-(GGS)Control | CONTROL操作が実行されました。Oracle GoldenGateレコードには、CONTROL情報が含まれます。
|
NSK非TMF |
|
115および117 (GGS)KeyFieldComp(32) |
主キーが更新されました。Oracle GoldenGateレコードには、キーの変更前イメージと、キーおよび行の変更後イメージが含まれます。データはFieldComp形式(圧縮)です。つまり、変更されていない列の変更前イメージは、データベースでは記録されません。
|
WindowsおよびUNIX |
|
116-LargeObject 116-LOB |
RAW列、BLOB列、CLOB列またはLOB列を示します。このタイプのデータは、複数のレコードにわたって格納されます。
|
WindowsおよびUNIX |
| 132-(GGS) SequenceOp | 順序に対する操作を示します。 | WindowsおよびUNIX |
|
134-UNIFIED UPDATE 135-UNIFIED PKUPDATE |
同じレコードに変更前と変更後の値の両方が含まれている、統一された証跡レコードを示します。UNIFIED UPDATE内の変更前イメージには、変更前イメージと変更後イメージの両方のトランザクション・レコードで使用可能なすべての列が含まれます。UNIFIED UPDATE内の変更前イメージには、トランザクション・レコードで使用可能なすべての列が含まれますが、変更後イメージは、UPDATEで変更された主キー列および列に制限されます。
|
WindowsおよびUNIX |
| 160 - DDL_Op | DDL操作を示します。 | WindowsおよびUNIX |
|
161- RecordFragment |
ベース・レコードを超えており、複数のレコードにわたって格納する必要のある大きな行の一部であることを示します。 | WindowsおよびUNIX |
|
200-GGSUnstructured Block 200-BulkIO |
BULKIO操作が実行されました。Oracle GoldenGateレコードには、RAW DP2ブロックが含まれます。
|
NSK非TMF |
| 201から204 |
これらは、NonStopトレース・レコードの異なるタイプです。トレース・レコードは、Oracle GoldenGateサポートのアナリストによって使用されます。説明は次のとおりです。
|
NSK非TMF |
| 205-GGSComment | ログダンプ・ユーティリティによって作成されたコメント・レコードを示します。コメント・レコードは、ログダンプによって、そのSAVEコマンドでファイルに保存されるデータの最初と最後に作成されます。
|
すべて |
| 249から254 |
これらは、NonStopトレース・レコードの異なるタイプです。トレース・レコードは、Oracle GoldenGateサポートのアナリストによって使用されます。説明は次のとおりです。
|
NSK非TM |