ADD TRANDATA

ADD TRANDATAでは、Oracle GoldenGateが必要とするトランザクション情報をトランザクション・レコードから取得します。

このコマンドを使用する前に、DBLOGINコマンドを使用してデータベース接続を確立してください。

ADD TRANDATAは、次に示すデータベースで有効です。
  • Db2 for i

  • Db2 LUW

  • Db2 z/OS

  • Oracle

  • PostgreSQL

  • SQL Server

サポートされている他のデータベースでは、この機能がすでに存在しているか、またはデータベース・インタフェースを使用して構成する必要があります。

ADD TRANDATAを使用する場合の各種データベースでのワイルドカードの使用については、次の表を参照してください:

データベース ワイルドカードの使用
Db2 LUW、Db2 z/OS ワイルドカードは表名にのみ使用できます。スキーマ名には使用できません。
Oracle ワイルドカードは、スキーマ名および表名に使用できます。PDB名には使用できません。
PostgreSQLおよびSQL Server ワイルドカードは、スキーマ名および表名に使用できます

Db2 for i

ADD TRANDATAでは、データのジャーナル処理を開始します。ADD TRANDATAコマンドはSTRJRNPFを呼び出す、表のジャーナル処理を開始する推奨メソッドです。STRJRNPFコマンドでRecord Images (IMAGES): *BOTHの必要なジャーナル・イメージ属性が確実に設定されるからです。

Db2 LUW

ADD TRANDATAでは、指定した表のDATA CAPTURE CHANGESを有効化します。デフォルトでは、ADD TRANDATAはデータベースに次のいずれかのコマンドを発行します。

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

ADD TRANDATAEXCLUDELONGオプションを使用することで、LONGVAR句を除外できます。

Db2 z/OS

ADD TRANDATAでは、指定した表のDATA CAPTURE CHANGESを有効化します。デフォルトでは、ADD TRANDATAはデータベースに次のいずれかのコマンドを発行します。

ALTER TABLE name DATA CAPTURE CHANGES;

Oracle Database

Oracle Database 23ai以上用のOracle GoldenGate 23ai (23.6)では、JSONリレーショナル二面性ビューおよびJSONコレクション表のレプリケーションがサポートされます。ADD TRANDATAコマンドは、JSONリレーショナル二面性ビューおよびJSONコレクション表のサプリメンタル・ロギングを有効にします。ただし、ADD TRANDATAはJSON二面性ビューの実表には影響せず、実表にトランザクション・データは追加されません。詳細は、Oracle GoldenGate MicroservicesドキュメントJSON DVおよびJSONコレクション表のレプリケーションを設定するための前提条件を参照してください。

次のようなコマンドを使用すると、表にのみ適用され、JSONリレーショナル二面性ビューおよびJSONコレクション表には適用されないことに注意してください。
ADD TRANDATA HR.*
JSON二面性ビューおよびJSONコレクション表から取得するには、レプリケートする必要があるJSON二面性ビューおよびJSONコレクション表ごとにADD TRANDATAコマンドを実行する必要があります。これにより、レプリケーション用に設定されているJSON二面性ビューおよびJSON収集表をユーザーが認識し、システムが過負荷になることを回避できます。

ノート:

ADD TRANDATAを使用してJSON二面性ビューの論理レプリケーションを有効にする場合、ワイルドカードはサポートされていません。ただし、JSONコレクション表では通常の表と同様にワイルドカードがサポートされるため、TABLE/MAP文でもワイルドカードを使用できます。

21cリリース以降では、このコマンドでOracleデータベースの自動取得用の表も有効になります。

デフォルトでは、Oracleに対するADD TRANDATAは、主キーの無条件ロギング、指定した表のすべての一意キーおよび外部キーの条件付きサプリメンタル・ロギングを有効にします。Oracle GoldenGateでOracle Databasesのサプリメンタル・ロギングが処理される方法の詳細は、ソース表とターゲット表の行の一意性の確認に関する項を参照してください。

可能な場合は、ADD TRANDATAコマンドではなくADD SCHEMATRANDATAコマンドを使用してください。ADD SCHEMATRANDATAコマンドでは、レプリケーションの継続性により、DDLが実行されたオブジェクトでDMLが発生することを保証します。除外パラメータを使用して、スキーマ指定からオブジェクトを除外できます。

Oracle GoldenGateのDDLレプリケーション機能を使用している場合、ADD SCHEMATRANDATAコマンドを使用して、必要な補足データを記録します。

ADD SCHEMATRANDATAを使用しているとき、ADD TRANDATACOLSオプションとともに使用して、TABLEおよびMAPパラメータでFILTER文およびKEYCOLS句に必要な列など、非キー列を記録することができます。

ノート:

DDLサポートが有効なときは、Oracleに対してADD TRANDATAを使用することはできますが、DDLが表で実行される前に、すべての表でDMLを停止できる場合に限ります。またはそれが不可能な場合、TABLEまたはMAP文でオブジェクト指定を満たす名前の新しい表を追加するDDLを発行するユーザーまたはアプリケーションがないことを保証できます。ユーザーまたはアプリケーションは、Oracle GoldenGate構成にすでに存在する表のキー定義を変更するDDLを発行する可能性がない必要があります。

Oracle GoldenGateを使用するときには、ソース・データベースを強制ロギング・モードにして、データベース・レベルで最小サプリメンタル・ロギングを有効にすることをお薦めします。これは、連鎖行の情報(存在する場合)を更新操作用のREDOログに追加します

Oracleデータベースに対してADD TRANDATAを使用する際は、次の事項を考慮してください。

  • Oracle GoldenGateがデータの抽出を開始した後にロギングの詳細設定を変更した場合、データが変更される前に、影響を受ける表からデータを読取り中のExtractプロセスを停止し、起動しなおす必要があります。

  • ADD TRANDATAを使用してサプリメンタル・ログ・グループを作成する場合、Oracle GoldenGateは接頭辞GGS_にオブジェクトIDを追加します(たとえばGGS_18342)。

PostgreSQL

ADD TRANDATAコマンドを使用して、表のREPLICA IDENTITY設定を変更できます。REPLICA IDENTITY設定は、UPDATEおよびDELETE操作のためにトランザクション・ログに記録する必要がある表の列のビフォア・イメージを制御します。

SQL Server

ADD TRANDATAでは、Oracle GoldenGateがSQL操作を再構成するために必要とするサプリメンタル・ロギング情報を有効化します。SQL Serverトランザクション・ログは、デフォルトでは十分な情報を提供しません。

TRANDATAを有効にすると、Oracle GoldenGateによって、データベースに対してSQL Serverのチェンジ・データ・キャプチャ機能が有効になり、TRANDATAで有効になった表ごとにチェンジ・データ・キャプチャ表が作成されます。

Admin Client構文

ADD TRANDATA container.owner.table]
[, FILEGROUP filegroup-name]
[, NOSCHEDULINGCOLS | ALLCOLS] 
[, ALLOWNONVALIDATEKEYS]
[, PARTIALJSON]
[, PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]
[container.]owner.table

Db2 LUW、Db2 z/OS、Oracle、PostgreSQLおよびSQL Serverに有効です。

2つの部分または3つの部分からなる名前の指定。Oracleマルチテナント・コンテナ・データベースを除く、すべてのサポートするデータベースに対し、2つの部分からなる名前owner.tableを使用します。

Oracleマルチテナント・コンテナ・データベースに対し、3つの部分からなる名前container.owner.tableを使用します。ワイルドカードは、任意のコンポーネントで使用できます。ワイルドカードとともに使用すると、ADD TRANDATAは、システム・オブジェクトの名前と一致する名前を除外します。システム・オブジェクトではないが、ワイルドカード・パターンでシステム・オブジェクト名と一致する名前のオブジェクトに対してADD TRANDATAを使用するには、ワイルドカードを使用せずにADD TRANDATAを発行します。

cdb$rootからコマンドを実行する場合は、データベース側で次のユーザー権限も設定していることを確認してください:
ALTER USER userID SET CONTAINER_DATA = ALL  CONTAINER = CURRENT;
schema.table [JOURNAL library/journal] |
library/file [JOURNAL library/journal]

Db2 for iに有効です。

SQLスキーマおよび表の名前、またはネイティブ・ライブラリおよびファイル名を指定します。デフォルトのジャーナルはDEFAULTJOURNALコマンドで設定され、JOURNALオプションを省略できます。そうでない場合は必須です。

FILEGROUP filegroup-name

SQL Serverに有効です。

(オプション) SQL Serverチェンジ・データ・キャプチャのステージング表は、既存のファイルグループ名を指定したFILEGROUPオプションを使用することで配置先のファイルグループを指定できます。
ADD TRANDATA owner.table FILEGROUP cdctables

TRANDATAを有効化するときに、各表に同じFILEGROUPを使用することも必要な場合は、GLOBALSファイルでFILEGROUPオプションを使用できます。

次の例は、GLOBALSファイルでのFILEGROUP myFileGroupの設定を示しています:

FILEGROUP myFileGroup

出力は次のとおりです。

Logging of supplemental log data is enabled for table dbo.test1 in filegroup 
myFileGroup

この場合、ADD TRANDATAコマンドは、すべての表に対してmyFileGroupを使用します。

ADD TRANDATAとともにFILEGROUPパラメータも使用すると、このコマンドはGLOBALSファイルで定義されたファイルグループ名をオーバーライドします。

たとえば、GLOBALSファイルでFILEGROUP myFileGroupを設定して、次のADD TRANDATAコマンドを実行するとします。

ADD TRANDATA dbo.* FILEGROUP yourFileGroup
その場合の出力は次のとおりです。
Logging of supplemental log data is enabled for table dbo.test1 in filegroup 
yourFileGroup 

この場合、ADD TRANDATAは、すべての表に対してmyFileGroupではなくyourFileGroupを使用します。

GLOBALSまたはADD TRANDATAのどちらにもFILEGROUPを指定していないと、コマンドラインは表のTRANDATAを追加するときにデータベースのデフォルトのFILEGROUPを考慮します。たとえば、ADD TRANDATA dbo.*を実行すると、出力は次のようになります。


Logging of supplemental log data is enabled for table dbo.test1 in filegroup 
PRIMARY

この場合、デフォルトのFILEGROUPPrimaryです。INFO TRANDATAコマンドを実行すると、FILEGROUP名はPRIMARYと表示されます。

NOSCHEDULINGCOLS | ALLCOLS

OracleおよびPostgreSQLで有効です。

Oracle GoldenGate 21c以降では、実行中のデータベースが自動取得機能をサポートしている場合、NOSCHEDULINGCOLSは非推奨となります。

これらのオプションは、ADD TRANDATAで指定している表を処理している統合Replicatのロギング要件を満たします。

NOSCHEDULINGCOLS

Oracleのみに有効です。

スケジュール列のロギングを無効にします。デフォルトで、ADD TRANDATAは、主キーの無条件ロギング、指定した表のすべての一意キーおよび外部キーの条件付きサプリメンタル・ロギングを有効にします。無条件ロギングでは、主キーの値を、キーが現在の操作で変更されたかどうかにかかわらず、強制的にログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。主キー、一意キーおよび外部キーはすべて、依存関係を計算するインバウンド・サーバーから利用できる必要があります。

ALLCOLS

表のすべてのキーおよび非キー列の無条件サプリメンタル・ロギングを有効にします。このオプションは、依存関係の計算に必要なキーと、フィルタリング、競合の解決またはその他の目的で使用されるその他のすべての列のロギングを有効にします。

PostgreSQLの場合、, ALLCOLSは表のREPLICA IDENTITYFULLに設定します。ALLCOLSは、ADD TRANDATAコマンドの一部として指定され、UPDATEおよびDELETE操作のすべての列のロギングを、これらの列が変更されていない場合でも有効にします。

主キーまたは一意索引のない表の場合、ALLCOLSオプションは冗長です。構文は次のとおりです。
ADD TRANDATA table_name ALLCOLS
COLS (columns)

Oracleに有効です。

COLSオプションでは、特定の非キー列を記録します。KEYCOLS句に指定した列、およびフィルタ処理や操作のために必要となる列のロギングに使用でき、TABLE文のFETCHCOLS句を使用するときよりも効率的に列の値をフェッチできる場合があります。カンマを使用して複数の列を区切ります(たとえばNAME, ID, DOB)。

INCLUDELONG | EXCLUDELONG

Db2 LUWに有効です。

ADD TRANDATAによって発行されるALTER TABLEINCLUDE LONGVAR COLUMNS属性を含めるかどうかを制御します。デフォルトはINCLUDELONGです。ADD TRANDATAをこのオプションとともに発行すると、Oracle GoldenGateは次の文を発行します。

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

EXCLUDELONGを使用すると、次のコマンドが発行されます。

ALTER TABLE name DATA CAPTURE CHANGES;

EXCLUDELONGを使用する場合、Oracle GoldenGateではLONGVAR列を含む表のビフォア・イメージを必要とする機能がサポートされません。たとえば、GETUPDATEBEFORESパラメータなどです。この機能をサポートするには、トランザクション・ログのLONGVAR列の設定を変更し、列値のビフォアおよびアフター・イメージ両方を含めるようにする必要があります。

NOKEY

Db2 for i、Db2 LUW、Db2 z/OS、Oracleに有効です。

Oracle GoldenGate 21c以降では、実行中のデータベースが自動取得機能をサポートする場合、Oracle 21c以降でNOKEYは非推奨となります。

主キー列のサプリメンタル・ロギングを抑止します。NOKEYを使用する場合は、COLSオプションを使用してキーとして機能できる別の列をロギングし、TABLEまたはMAPパラメータのKEYCOLSオプションを使用してこれらの列を代替キーとして指定します。

NOVALIDATE

Db2 for i、Db2 LUW、Db2 z/OS、Oracleに有効です。

処理中の表に関する追加情報がADD TRANDATAで処理されないようにします。デフォルトでは、このオプションは有効です。追加情報の処理により、コマンドの応答時間が長くなります。このオプションは、その応答時間を短縮するために使用できます。

ALLOWNONVALIDATEDKEYS

Db2 for i、Db2 LUW、Db2 z/OS、Oracleに有効です。

サプリメンタル・ロギングのNON VALIDATEDおよびNOT VALID主キーが含まれます。これらのキーは、Oracle GoldenGateによって使用される標準キー選択基準より優先されます。GLOBALSのパラメータALLOWNONVALIDATEDKEYSが使用されている場合、ADD SCHEMATRANDATAは、指定されているかどうかにかかわらず、ALLOWNONVALIDATEDKEYSを使用して実行されます。デフォルトでは、NON VALIDATEDおよびNOT VALID主キーは記録されません。

PARTIALJSON

Oracleに有効です。

表レベルで部分的なJSON更新をフェッチします。有効にすると、REDOには部分的なJSONレコードが含まれます。

TRANLOGOPTIONS FETCHPARTIALJSONパラメータも参照してください。

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}

DMLとDDLの両方に有効です。Oracleデータ・ポンプのExportダンプ・ファイルにインスタンス化CSNが設定されるよう、ソースの表を自動的に準備します。Replicatは、(インポート時に) Oracle Data Pumpによって設定された表ごとのインスタンス化CSNを使用して、証跡レコードをフィルタ処理で除外します。ターゲット上では、データ・ポンプ・インポートがDBOPTIONS ENABLE_INSTANTIATION_FILTERINGパラメータを使用して、システム表とビューにインスタンス化SCNを移入し、表レベルのインスタンス化フィルタリングを有効にします。

WAIT

インフライト・トランザクションを待機し、表のインスタンス化を準備します。

LOCK

表にロックを設定します(表のインスタンス化を準備するため)。

NOWAIT

デフォルトの動作。インスタンス化の準備が即時実行されます。

NONE

インスタンス化の準備は行われません。

次の例では、Oracle表の主キーのロギングと、SQL ServerまたはDB2表のサプリメンタル・データのロギングのいずれかが行われます。これにより、自動取得用の表も有効になります。

ADD TRANDATA hr.employees

次の例では、acctという名前の表のすべてのキーおよび非キー列の無条件サプリメンタル・ロギングを有効にします。これにより、自動取得用の表も有効になります。

ADD TRANDATA hr.employees ALLCOLS

次のOracle Databaseの例では、主キーに加えて非キー列のnameおよびaddressをロギングします。これにより、自動取得用の表も有効になります。

ADD TRANDATA hr.employees, COLS (name, address)

次のOracle Databaseの例では、主キーはロギングせず、かわりに非キー列のnamepidをロギングします。これにより、自動取得用の表も有効になります。

ADD TRANDATA hr.employees, NOKEY, COLS (name, pid)

次の例では、インスタンス化のために表を準備しませんが、ロギングを追加します。これにより、自動取得用の表も有効になります。

ADD TRANDATA hr.employees PREPARECSN NONE

次の例では、追加の表情報の処理を抑制します。これにより、自動取得用の表も有効になります。

ADD TRANDATA hr.employees.*name NOVALIDATE