2.13 ADD TRANDATA
ADD TRANDATAでは、Oracle GoldenGateが必要とするトランザクション情報をトランザクション・レコードから取得します。
このコマンドを使用する前に、DBLOGINコマンドを使用してデータベース接続を確立してください。
ADD TRANDATAは、次に示すデータベースでのみ有効です。
-
DB2 for i
-
DB2 LUW
-
DB2 z/OS
-
Oracle
-
SQL Server
-
PostgreSQL
サポートされている他のデータベースでは、この機能がすでに存在しているか、またはデータベース・インタフェースを使用して構成する必要があります。トランザクション情報を使用可能にするための特別な要件の詳細は、ご使用のデータベース用の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)。
SQL Server
ADD TRANDATAでは、Oracle GoldenGateがSQL操作を再構成するために必要とするサプリメンタル・ロギング情報を有効化します。SQL Serverトランザクション・ログは、デフォルトでは十分な情報を提供しません。
TRANDATAを有効にすると、Oracle GoldenGateはデータベースに対してSQL Serverチェンジ・データ・キャプチャ機能を有効にして、TRANDATAで有効化された表ごとにチェンジ・データ・キャプチャ表を作成します。
SQL Serverチェンジ・データ・キャプチャのステージング表は、既存のファイルグループ名を指定したFILEGROUPオプションを使用することで配置先のファイルグループを必要に応じて指定できます。
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と表示されます。
PostgreSQL
ADD TRANDATAコマンドを使用して、表のREPLICA IDENTITY設定を変更できます。REPLICA IDENTITY設定は、UPDATEまたはDELETE操作について、表のすべての列のビフォア・イメージをトランザクション・ログに記録するかどうかを制御します。
Admin Client構文
ADD TRANDATA container.owner.table]
[, 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]
[, KEYCOLSONLY]
[, 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[JOURNALlibrary/journal] | -
library/file[JOURNALlibrary/journal] -
DB2 for iに有効です。
SQLスキーマおよび表の名前、またはネイティブ・ライブラリおよびファイル名を指定します。デフォルトのジャーナルは
DEFAULTJOURNALコマンドで設定され、JOURNALオプションを省略できます。そうでない場合は必須です。 -
FILEGROUP FILEGROUPGfilegroup-nameSQL Serverに有効です。
(オプション) SQL Serverチェンジ・データ・キャプチャのステージング表は、既存のファイルグループ名を指定した
FILEGROUPオプションを使用することで配置先のファイルグループを指定できます。-
NOSCHEDULINGCOLS | ALLCOLS -
Oracleに有効です。
ALLCOLSは、PostgreSQLに対しても有効です。これらのオプションは、
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に有効です。
表に明示的な主キーが定義されている場合、表の
REPLICA IDENTITYはデフォルトに設定され、主キー列のビフォア・イメージのみがログに記録されます(該当する場合)。定義済の明示的な主キーが表に含まれていない場合、表の
REPLICA IDENTITYはFULLに設定され、表のすべての列のビフォア・イメージをロギングします。 -
NOKEY -
ADD TRANDATAでサポートされるすべてのデータベースに有効。主キー列のサプリメンタル・ロギングを抑止します。
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表のサプリメンタル・データのロギングを行います。
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
親トピック: 共通コマンドライン・インタフェースのコマンド