ADD TRANDATA
ADD TRANDATAでは、Oracle GoldenGateが必要とするトランザクション情報をトランザクション・レコードから取得します。
このコマンドを使用する前に、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 TRANDATAとEXCLUDELONGオプションを使用することで、LONGVAR句を除外できます。
Db2 z/OS
ADD TRANDATAでは、指定した表のDATA CAPTURE CHANGESを有効化します。デフォルトでは、ADD TRANDATAはデータベースに次のいずれかのコマンドを発行します。
ALTER TABLE name DATA CAPTURE CHANGES;
Oracle Database
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 TRANDATAをCOLSオプションとともに使用して、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で有効になった表ごとにチェンジ・データ・キャプチャ表が作成されます。
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、PostgreSQLおよびSQL Serverに有効です。
2つの部分または3つの部分からなる名前の指定。Oracleマルチテナント・コンテナ・データベースを除く、すべてのサポートするデータベースに対し、2つの部分からなる名前
owner.tableを使用します。Oracleマルチテナント・コンテナ・データベースに対し、3つの部分からなる名前container.owner.tableを使用します。ワイルドカードは、任意のコンポーネントで使用できます。ワイルドカードとともに使用すると、ADD TRANDATAは、システム・オブジェクトの名前と一致する名前を除外します。システム・オブジェクトではないが、ワイルドカード・パターンでシステム・オブジェクト名と一致する名前のオブジェクトに対してADD TRANDATAを使用するには、ワイルドカードを使用せずにADD TRANDATAを発行します。 -
schema.table[JOURNALlibrary/journal] | -
library/file[JOURNALlibrary/journal] -
Db2 for iに有効です。
SQLスキーマおよび表の名前、またはネイティブ・ライブラリおよびファイル名を指定します。デフォルトのジャーナルは
DEFAULTJOURNALコマンドで設定され、JOURNALオプションを省略できます。そうでない場合は必須です。 -
FILEGROUPfilegroup-name -
SQL Serverに有効です。
(オプション) SQL Serverチェンジ・データ・キャプチャのステージング表は、既存のファイルグループ名を指定したFILEGROUPオプションを使用することで配置先のファイルグループを指定できます。ADD TRANDATA owner.table FILEGROUP cdctablesTRANDATAを有効化するときに、各表に同じFILEGROUPを使用することも必要な場合は、GLOBALSファイルでFILEGROUPオプションを使用できます。次の例は、
GLOBALSファイルでのFILEGROUPmyFileGroupの設定を示しています:FILEGROUP myFileGroupGGSCIコマンドは、次のとおりです。ADD TRANDATA dbo.*出力は次のとおりです。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を指定していないと、GGSCIは表のTRANADATAを追加するときにデータベースのデフォルトのFILEGROUPを考慮します。たとえば、ADD TRANDATA dbo.*を実行すると、出力は次のようになります。Logging of supplemental log data is enabled for table dbo.test1 in filegroup PRIMARYこの場合、デフォルトの
FILEGROUPはPrimaryです。INFO TRANDATAコマンドを実行すると、FILEGROUP名はPRIMARYと表示されます。 -
NOSCHEDULINGCOLS | ALLCOLS -
OracleおよびPostgreSQLで有効です。
Oracle GoldenGate 21c以降では、実行中のデータベースが自動取得機能をサポートしている場合、
NOSCHEDULINGCOLSは非推奨となります。これらのオプションは、
ADD TRANDATAで指定している表を処理している統合Replicatのロギング要件を満たします。-
NOSCHEDULINGCOLS -
Oracleのみに有効です。
スケジュール列のロギングを無効にします。デフォルトで、
ADD TRANDATAは、主キーの無条件ロギング、指定した表のすべての一意キーおよび外部キーの条件付きサプリメンタル・ロギングを有効にします。無条件ロギングでは、主キーの値を、キーが現在の操作で変更されたかどうかにかかわらず、強制的にログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。主キー、一意キーおよび外部キーはすべて、依存関係を計算するインバウンド・サーバーから利用できる必要があります。 -
ALLCOLS -
表のすべてのキーおよび非キー列の無条件サプリメンタル・ロギングを有効にします。このオプションは、依存関係の計算に必要なキーと、フィルタリング、競合の解決またはその他の目的で使用されるその他のすべての列のロギングを有効にします。
-
-
COLS (columns) -
Oracleに有効です。
COLSオプションでは、特定の非キー列を記録します。KEYCOLS句に指定した列、およびフィルタ処理や操作のために必要となる列のロギングに使用でき、TABLE文のFETCHCOLS句を使用するときよりも効率的に列の値をフェッチできる場合があります。カンマを使用して複数の列を区切ります。たとえばNAME,ID,DOB。 -
INCLUDELONG | EXCLUDELONG -
Db2 LUWに有効です。
ADD TRANDATAによって発行されるALTER TABLEにINCLUDE 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主キーは記録されません。 -
PREPARECSN {WAIT | LOCK | NOWAIT | NONE} -
DMLとDDLの両方に有効です。Oracleデータ・ポンプのExportダンプ・ファイルにインスタンス化CSNが設定されるよう、ソースの表を自動的に準備します。Replicatは、(インポート時に) Oracle Data Pumpによって設定された表ごとのインスタンス化CSNを使用して、証跡レコードをフィルタ処理で除外します。ターゲット上では、データ・ポンプ・インポートが
DBOPTIONS ENABLE_INSTANTIATION_FILTERINGパラメータを使用して、システム表とビューにインスタンス化SCNを移入し、表レベルのインスタンス化フィルタリングを有効にします。
例
-
次の例では、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の例では、主キーはロギングせず、かわりに非キー列の
nameとpidをロギングします。これにより、自動取得用の表も有効になります。ADD TRANDATA hr.employees, NOKEY, COLS (name, pid) -
次の例では、インスタンス化のために表を準備しませんが、ロギングを追加します。これにより、自動取得用の表も有効になります。
ADD TRANDATA hr.employees PREPARECSN NONE -
次の例では、追加の表情報の処理を抑制します。これにより、自動取得用の表も有効になります。
ADD TRANDATA hr.employees.*name NOVALIDATE