2.12 ADD TRANDATA

ADD TRANDATAでは、Oracle GoldenGateが必要とするトランザクション情報をトランザクション・レコードから取得します。21cリリース以降では、このコマンドで自動取得用の表も有効になります。

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

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

  • DB2 LUW

  • DB2 z/OS

  • Oracle

  • PostgreSQL

  • SQL Server

サポートされている他のデータベースでは、この機能がすでに存在しているか、またはデータベース・インタフェースを使用して構成する必要があります。トランザクション情報を使用可能にするための特別な要件の詳細は、ご使用のデータベース用のOracle GoldenGateのインストレーション・ガイドを参照してください。

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に対する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で有効化された表ごとにチェンジ・データ・キャプチャ表を作成します。

オプションで、FILEGROUPオプションと既存のファイルグループ名を使用して、SQL Serverのチェンジ・データ・キャプチャ・ステージング表を配置するファイルグループを指定できます。

ADD TRANDATA owner.table FILEGROUP cdctables

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

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

FILEGROUP myFileGroup

GGSCIコマンドは、次のとおりです。
ADD TRANDATA dbo.*
出力は次のとおりです。

Logging of supplemental log data is enabled for table dbo.test1 in filegroup 
myFileGroup 
Logging of supplemental log data is enabled for table dbo.test2 in filegroup 
myFileGroup 
Logging of supplemental log data is enabled for table dbo.test3 in filegroup 
myFileGroup 
Logging of supplemental log data is enabled for table dbo.test4 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 
Logging of supplemental log data is enabled for table dbo.test2 in filegroup 
yourFileGroup 
Logging of supplemental log data is enabled for table dbo.test3 in filegroup 
yourFileGroup 
Logging of supplemental log data is enabled for table dbo.test4 in filegroup 
yourFileGroup 

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

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


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

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

Admin Client構文

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

GGSCI構文

ADD TRANDATA {[container.]owner.table | schema.table [JOURNAL 
library/journal] | 
   library/file [JOURNAL library/journal]} 
[, FILEGROUP filegroup-name]
[, NOSCHEDULINGCOLS | ALLCOLS] 
[, COLS (columns)] 
[, INCLUDELONG | EXCLUDELONG] 
[, NOKEY] 
[, NOVALIDATE]
[, PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]
[container.]owner.table

DB2 LUW、DB2 z/OS、Oracle, SQL Serverに有効です。

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

schema.table [JOURNAL library/journal] |
library/file [JOURNAL library/journal]

DB2 for iに有効です。

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

FILEGROUP
FILEGROUPG filegroup-name

SQL Serverに有効です。

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

NOSCHEDULINGCOLS | ALLCOLS

Oracleに有効です。ALLCOLSはPostgreSQLでも有効です。Oracle GoldenGate 21c以降では、実行中のデータベースで自動取得機能がサポートされる場合、Oracle 20c以上でNOSCHEDULINGCOLSは非推奨です。

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

NOSCHEDULINGCOLS

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

ALLCOLS

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

(PostgreSQL) REPLICA IDENTITYFULLに設定されます。

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列の設定を変更し、列値のビフォアおよびアフター・イメージ両方を含めるようにする必要があります。

KEYCOLSONLY
PostgreSQLに有効です。

KEYCOLSONLYを使用して定義された明示的な主キーが表に含まれている場合は、デフォルトで表のREPLICA IDENTITYが主キー列のみのビフォア・イメージに設定されます。

定義済の明示的な主キーが表に含まれていない場合、表のREPLICA IDENTITYFULLに設定され、表のすべての列のビフォア・イメージをロギングします。

NOKEY

ADD TRANDATAでサポートされるすべてのデータベースに有効。Oracle GoldenGate 21c以降では、実行中のデータベースで自動取得機能がサポートされる場合、Oracle 20c以上でNOKEYは非推奨です。

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

NOVALIDATE

ADD TRANDATAでサポートされるすべてのデータベースに有効。

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

ALLOWNONVALIDATEDKEYS

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

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 finance.acct

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

ADD TRANDATA finance.acct ALLCOLS

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

ADD TRANDATA finance.acct, COLS (name, address)

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

ADD TRANDATA finance.acct, NOKEY, COLS (name, pid)

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

ADD TRANDATA acct PREPARECSN NONE

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

ADD TRANDATA acct.emp* NOVALIDATE