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 TRANDATA
とEXCLUDELONG
オプションを使用することで、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 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
で有効化された表ごとにチェンジ・データ・キャプチャ表を作成します。
オプションで、FILEGROUPオプションと既存のファイルグループ名を使用して、SQL Serverのチェンジ・データ・キャプチャ・ステージング表を配置するファイルグループを指定できます。
ADD TRANDATA owner.table FILEGROUP cdctables
TRANDATA
を有効化するときに、各表に同じFILEGROUP
を使用することも必要な場合は、GLOBALSファイルでFILEGROUP
オプションを使用できます。
次の例は、GLOBALS
ファイルでのFILEGROUP
myFileGroup*
の設定を示しています:
FILEGROUP myFileGroup
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
この場合、デフォルトのFILEGROUP
はPrimary
です。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 IDENTITY
がFULL
に設定されます。
-
-
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
列の設定を変更し、列値のビフォアおよびアフター・イメージ両方を含めるようにする必要があります。 -
KEYCOLSONLY
- PostgreSQLに有効です。
KEYCOLSONLY
を使用して定義された明示的な主キーが表に含まれている場合は、デフォルトで表のREPLICA IDENTITY
が主キー列のみのビフォア・イメージに設定されます。定義済の明示的な主キーが表に含まれていない場合、表の
REPLICA IDENTITY
はFULL
に設定され、表のすべての列のビフォア・イメージをロギングします。 -
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を移入し、表レベルのインスタンス化フィルタリングを有効にします。
例
-
次の例では、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の例では、主キーはロギングせず、かわりに非キー列の
name
とpid
をロギングします。これにより、自動取得用の表も有効になります。ADD TRANDATA finance.acct, NOKEY, COLS (name, pid)
-
次の例では、ロギングが追加されますが、表のインスタンス化の準備は行われません。これにより、自動取得用の表も有効になります。
ADD TRANDATA acct PREPARECSN NONE
-
次の例では、追加の表情報の処理を抑制します。これにより、自動取得用の表も有効になります。
ADD TRANDATA acct.emp* NOVALIDATE
親トピック: 共通コマンドライン・インタフェースのコマンド