E Oracle GoldenGate証跡について
内容は次のとおりです。
E.1 証跡リカバリ・モード
デフォルトでは、Extractは追加モードで動作します。このモードでは、プロセス障害が発生すると証跡にリカバリ・マーカーが書き込まれ、Extractは、すべての古いデータの履歴をリカバリ目的で保持するために、ファイルにリカバリ・データを追加します。
追加モードでは、Extractの初期化によって、起動時に証跡に書き込まれた最後の完全なトランザクションのIDが判別されます。この情報に基づいて、Extractは、そのトランザクションのコミット・レコードがデータソースで見つかると、リカバリを停止します。その後、Extractは、抽出要件を満たす次のコミット済トランザクションから新しいデータ取得を開始し、新しいデータの証跡への追加を始めます。データ・ポンプまたはReplicatは、このリカバリ・ポイントから読取りを再開します。
上書きモードは、Oracle GoldenGateリリース10.0以前のリリースで使用されていたもう1つのExtractリカバリ方法です。これらのリリースでは、Extractは、新規データを追加するかわりに、最後の書込みチェックポイント位置の後にある証跡の既存のトランザクション・データを上書きします。書き込まれる最初のトランザクションは、データソースの最後の読取りチェックポイント位置の後にある、抽出要件を満たす最初のトランザクションです。
ターゲットのOracle GoldenGateのリリースがリリース10より古い場合、Extractは、下位互換性をサポートするために自動的に上書きモードに戻ります。この動作は、RECOVERYOPTIONS
パラメータを使用して手動で制御できます。
親トピック: Oracle GoldenGate証跡について
E.2 証跡のレコード形式
Oracle GoldenGateによって証跡または抽出ファイルに書き込まれる各変更レコードには、ヘッダー領域、データ領域および(状況により)ユーザー・トークン領域が含まれます。レコード・ヘッダーには、トランザクション環境に関する情報が含まれ、データ領域には、抽出された実際のデータ値が含まれます。トークン領域には、Oracle GoldenGateユーザーが列のマッピングおよび変換用に指定した情報が含まれます。
Oracle GoldenGateの証跡ファイルは構造化されていません。Oracle GoldenGateレコードは、Oracle GoldenGateソフトウェアに付属するログダンプ・ユーティリティを使用して表示できます。詳細は、Oracle GoldenGateログダンプ・リファレンスを参照してください。
ノート:
Oracle GoldenGateソフトウェアの機能拡張のために、証跡レコードの形式は、このドキュメントに記載されていない変更に応じて修正される可能性があります。現在の構造を表示するには、ログダンプ・ユーティリティを使用してください。
親トピック: Oracle GoldenGate証跡について
E.3 証跡ファイルのヘッダー・レコード
証跡の各ファイルの先頭部分に、ファイル・ヘッダー・レコードが格納されています。ファイル・ヘッダーには、証跡ファイル自体に関する情報が含まれます。以前のリリースの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
トークンは19.1互換性レベルで証跡ファイルに書き込まれますが、その互換性レベルをサポートする以前のOracle GoldenGateリリースでは、新しいトークンは無視されます。トークンは、データベース情報グループに属します。DB_UNIQUE_NAME
の可能なすべての値を30文字に制限して収めることができるように、このフィールドは65536バイトに制限されます。
Oracle GoldenGateプロセスは独立しており、異なるOracle GoldenGateリリースのプロセスが混在できるため、各証跡ファイルのファイル・ヘッダーにはバージョン・インジケータが含まれています。デフォルトでは、証跡ファイルのバージョンは、そのファイルを作成したプロセスの現行バージョンです。証跡のバージョンを設定する必要がある場合、EXTTRAIL
、EXTFILE
、RMTTRAIL
またはRMTFILE
パラメータのFORMAT
オプションを使用します。
証跡のヘッダーは、ログダンプ・ユーティリティのFILEHEADER
コマンドを使用して表示できます。ファイル・ヘッダーのトークンの詳細は、Oracle GoldenGateログダンプ・リファレンスを参照してください。
E.3.1 証跡ファイル・ヘッダーのパーティション名レコード
証跡ファイル・ヘッダーの各DMLレコードには、パーティション名レコード(PNR)への索引を含めることができます。完全なパーティション名は長くなる可能性があるため、PNRは、パーティションの初回書込み時に各証跡ファイルに作成されます。各PNRには、パーティション名とパーティション・オブジェクトIDが含まれます。
プライマリExtractの場合、PNRはパーティション一致に対してのみ生成され、PARTITION
およびPARTITIONEXCLUDE
パラメータによって含められます。これらのパーティションのDMLレコードには、表定義レコードへの索引と、パーティション名レコードへの別の索引があります。他のすべての表(パーティション化されていない表や、PARTITION
またはPARTITIONEXCLUDE
パラメータで一致しない、または除外されていないパーティション化された表など)からのDMLレコードには、現在行われているように表定義レコードへの索引のみがあります。データ・ポンプおよび分散サーバーでは、ソース証跡レコードにPNR索引が含まれている場合にPNRが書き込まれます。
親トピック: 証跡ファイルのヘッダー・レコード
E.3.2 Logdumpでのパーティション名およびPNR索引の表示
Logdumpユーティリティを使用して、パーティション名レコードと、PNR索引を含むDMLを表示します。
次に、ファイル内の表示を取得する例を示します。
$ logdump > output.txt <<EOF
ghdr on
detail data
open ./dirdat/tr000000000
n 200
EOF
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
親トピック: 証跡ファイルのヘッダー・レコード
E.4 Oracle GoldenGateレコードの例
次に、ログダンプでの表示どおりにOracle GoldenGateレコードを記載します。最初の部分(フィールドのリスト)はヘッダーで、2番目の部分はデータ領域です。レコードは、Oracle GoldenGateでサポートされるすべてのプラットフォームで次のように表示されます。

図logdumprecord_wseqinfo.jpgの説明
親トピック: Oracle GoldenGate証跡について
E.5 レコード・ヘッダー領域
Oracle GoldenGateレコードのヘッダーには、レコードに格納されているデータのメタデータがあり、次の情報が含まれます。
-
挿入、更新、削除などの操作タイプ
-
更新の前または後を示すインジケータ
-
トランザクション・グループやコミット・タイムスタンプなどのトランザクション情報
E.5.1 ヘッダー・フィールドの説明
次に、Oracle GoldenGateレコードのヘッダー・フィールドについて説明します。一部のフィールドは特定のプラットフォームにのみ適用されます。
表E-1 Oracle GoldenGateレコードのヘッダー・フィールド
フィールド | 説明 |
---|---|
|
この値は常に |
|
(NonStop) Oracle GoldenGateがTMF監査証跡から中断されたトランザクションを抽出する場合に条件付きで設定されます。通常、 |
|
レコード・バッファの長さ(バイト単位)。 |
|
レコードにより表される操作のタイプ。操作タイプのリストは、表E-2を参照してください。 |
|
現在のトランザクション内におけるレコードの位置。値は次のとおりです。 0 — トランザクションの最初のレコード 1 — トランザクションの最初と最後以外のレコード 2 — トランザクションの最後のレコード 3 — トランザクションの唯一のレコード |
|
(NonStop)ソースがNonStopファイルであり、システム・キーを保持している場合、そのシステム・キーの長さ(4または8バイト)。システム・キーが存在する場合、レコードの最初の |
|
Oracle REDOログ順序番号などのトランザクション・ログ識別子を識別します。 |
|
(WindowsおよびUNIX)レコードが、大きすぎて1つのレコードに収まらないより大きなデータの1セグメントであるかどうかを示します。各セグメントには、
|
|
WindowsおよびUNIXのレコードの場合、このフィールドの値は常に4(内部形式における NonStopのレコードの場合、このフィールドの値は、レコード・タイプによって異なります。
|
|
レコードが更新操作の変更前( |
|
操作が発生した、ソース・システムのローカル時刻での時間(GMT形式)。この時間は、操作が発生した場合に応じてトランザクションの各操作で同じである場合も異なる場合もあります。 |
|
(NonStop)データが抽出されたシステムのノード番号。NonStopクラスタの各システムは、一意のノード番号を持ちます。ノード番号の範囲は、0から255です。 NonStop以外から導出されたレコードの場合、 |
|
データがトランザクション・ログから読み取られたか、データベースからフェッチされたかを示します。
|
|
このフィールドは現在使用されていません。 |
|
データのトランザクション・ログでの位置を識別します。 |
|
(WindowsおよびUNIX) Oracle GoldenGateファイルに書き込むために |
親トピック: レコード・ヘッダー領域
E.5.2 ヘッダー・データの使用
@GETENV
関数のGGHEADER
オプションを使用することによって、またはTABLE
やMAP
パラメータのCOLMAP
文内でソース式として次のトランザクション要素のいずれかを使用することによって、Oracle GoldenGateレコード・ヘッダーで使用可能なデータの一部をマッピングに使用できます。
-
GGS_TRANS_TIMESTAMP
-
GGS_TRANS_RBA
-
GGS_OP_TYPE
-
GGS_BEFORE_AFTER_IND
親トピック: レコード・ヘッダー領域
E.6 レコード・データ領域
Oracle GoldenGate証跡レコードのデータ領域には、次のデータが含まれます。
-
変更がOracle GoldenGateファイルに書き込まれた時刻
-
データベース操作のタイプ
-
レコードの長さ
-
証跡ファイル内の相対バイト・アドレス
-
表名
-
16進形式のデータ変更
次に、Windows、UNIX、LinuxおよびNonStopシステムのOracle GoldenGateによって使用されるレコード・イメージ形式の相違点について説明します。
E.6.1 完全レコード・イメージ形式(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プロセスによって取得できます。)
親トピック: レコード・データ領域
E.6.2 圧縮レコード・イメージ形式(Windows、UNIX、Linuxソース)
圧縮レコード・イメージには、処理される行で変更されたキー(主、一意、KEYCOLS
)および列のみが含まれます。デフォルトでは、WindowsおよびUNIXシステムのプロセスによって書き込まれる証跡レコードは、常に圧縮されます。圧縮レコードの形式は次のとおりです。
column_index
column_length
column_data
[...]
説明:
-
column_index
は、ソース表内の列の序数索引です(2バイト)。 -
colum_length
は、データの長さです(2バイト)。 -
column_data
は、NULL
またはVARCHAR
の長さインジケータを含むデータです。
NonStopプラットフォームから書き込まれるEnscribeレコードは、圧縮されないことがあります。圧縮Enscribeレコードの形式は次のとおりです。
field_offset field_length field_value
[...]
説明:
-
field_offset
は、変更された値の元のレコード内のオフセットです(2バイト)。 -
field_length
は、データの長さです(2バイト)。 -
field_value
は、NULL
またはVARCHAR
の長さインジケータを含むデータです。
圧縮Enscribeレコードの最初のフィールドは、主キーまたはシステム・キーです。
親トピック: レコード・データ領域
E.7 トークン領域
証跡レコードには、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証跡について
E.8 Oracle GoldenGateの操作タイプ
次に、Oracle GoldenGateの操作タイプの一部を示します。Oracle GoldenGateに新機能が追加されると、タイプが追加されることがあります。最新のリストを確認するには、ログダンプ・ユーティリティのSHOW RECTYPE
コマンドを使用してください。
表E-2 Oracle GoldenGateの操作タイプ
タイプ | 説明 | プラットフォーム |
---|---|---|
1-Abort |
トランザクションが中断されました。 |
NSK TMF |
2-Commit |
トランザクションがコミットされました。 |
NSK TMF |
3-Delete |
レコードまたは行が削除されました。 |
すべて |
4-EndRollback |
データベース・ロールバックが終了しました。 |
NSK TMF |
5-Insert |
レコードまたは行が挿入されました。 |
すべて |
6-Prepared |
ネットワーク・トランザクションのコミット準備が完了しました。 |
NSK TMF |
7-TMF-Shutdown |
TMFが停止しました。 |
NSK TMF |
8-TransBegin |
現在使用されていません。 |
NSK TMF |
9-TransRelease |
現在使用されていません。 |
NSK TMF |
10-Update |
レコードまたは行が更新されました。 |
すべて |
11-UpdateComp |
|
NSK TMF |
12-FileAlter |
データベース・ファイルの属性が変更されました。 |
NSK |
13-FileCreate |
データベース・ファイルが作成されました。 |
NSK |
14-FilePurge |
データベース・ファイルが削除されました。 |
NSK |
15-FieldComp |
SQL表の行が更新されました。この形式では、変更されたバイトのみが示されます。変更されていない列の変更前イメージは、データベースでは記録されません。 |
すべて |
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 |
ファイルからすべてのデータが削除されました( |
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 |
|
NSK非TMF |
106-GGSChangeLabel |
|
NSK非TMF |
107-(GGS)Control |
|
NSK非TMF |
115および117 (GGS)KeyFieldComp(32) |
主キーが更新されました。Oracle GoldenGateレコードには、キーの変更前イメージと、キーおよび行の変更後イメージが含まれます。データは |
WindowsおよびUNIX |
116-LargeObject 116-LOB |
|
WindowsおよびUNIX |
132-(GGS) SequenceOp |
順序に対する操作を示します。 |
WindowsおよびUNIX |
134-UNIFIED UPDATE 135-UNIFIED PKUPDATE |
同じレコードに変更前と変更後の値の両方が含まれている、統一された証跡レコードを示します。 |
WindowsおよびUNIX |
160 - DDL_Op |
DDL操作を示します。 |
WindowsおよびUNIX |
161- RecordFragment |
ベース・レコードを超えており、複数のレコードにわたって格納する必要のある大きな行の一部であることを示します。 |
WindowsおよびUNIX |
200-GGSUnstructured Block 200-BulkIO |
|
NSK非TMF |
201から204 |
これらは、NonStopトレース・レコードの異なるタイプです。トレース・レコードは、Oracle GoldenGateサポートのアナリストによって使用されます。説明は次のとおりです。
|
NSK非TMF |
205-GGSComment |
ログダンプ・ユーティリティによって作成されたコメント・レコードを示します。コメント・レコードは、ログダンプによって、その |
すべて |
249から254 |
これらは、NonStopトレース・レコードの異なるタイプです。トレース・レコードは、Oracle GoldenGateサポートのアナリストによって使用されます。説明は次のとおりです。
|
NSK非TMF |
親トピック: Oracle GoldenGate証跡について