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 TRANDATA
とEXCLUDELONG
オプションを使用することで、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コレクション表のレプリケーションを設定するための前提条件を参照してください。
ADD TRANDATA HR.*
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 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
で有効になった表ごとにチェンジ・データ・キャプチャ表が作成されます。
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
この場合、デフォルトの
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
主キーは記録されません。 -
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を移入し、表レベルのインスタンス化フィルタリングを有効にします。
例
-
次の例では、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