ADD TRANDATA
では、Oracle GoldenGateが必要とするトランザクション情報をトランザクション・レコードから取得します。
このコマンドを使用する前に、DBLOGIN
コマンドを使用してデータベース接続を確立してください。
ADD TRANDATA
は、次に示すデータベースでのみ有効です。サポートされている他のデータベースでは、この機能がすでに存在しているか、またはデータベース・インタフェースを使用して構成する必要があります。トランザクション情報を使用可能にするための特別な要件の詳細は、ご使用のデータベース用の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データベース用Oracle GoldenGateのサプリメンタル・ロギングの操作方法の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。
可能な場合は、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を発行する可能性がない必要があります。 |
詳細は、「ADD SCHEMATRANDATA」を参照してください。
Oracle GoldenGateを使用するときに、ソース・データベースを強制ロギング・モードにし、データベース・レベルで最小サプリメンタル・ロギングを有効にすることを強くお薦めします。これは、連鎖行の情報(存在する場合)を更新操作用のREDOログに追加します。Oracle GoldenGateをサポートするロギングの構成の詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。
Oracleデータベースに対してADD TRANDATA
を使用する際は、次の事項を考慮してください。
Oracle GoldenGateがデータの抽出を開始した後にロギングの詳細設定を変更した場合、データが変更される前に、影響を受ける表からデータを読取り中のExtractプロセスを停止し、起動しなおす必要があります。
ADD TRANDATA
を使用してサプリメンタル・ログ・グループを作成する場合、Oracle GoldenGateは接頭辞GGS_
にオブジェクトIDを追加します(例: GGS_18342
)。
SQL Serverデータベース
ADD TRANDATA
では、Oracle GoldenGateがSQL操作を再構成するために必要とするサプリメンタル・ロギング情報を有効化します。SQL Serverトランザクション・ログは、デフォルトでは十分な情報を提供しません。
Sybaseデータベース
ADD TRANDATA
では、Sybaseのsp_setreptable
およびsp_setrepcol
システム・プロシージャを実行して、Sybase表をレプリケーション対象としてマーク付けします。ADD TRANDATA
オプションでは、データベース機能を使用して、データベースが指定した表のLOB
データを伝播する方法を制御します。ADD TRANDATA
オプションのリストを参照してください。
構文
ADD TRANDATA {[container
.]owner
.table
| schema.table [JOURNAL library/journal] | library/file [JOURNALlibrary/journal
]} [, NOSCHEDULINGCOLS | ALLCOLS] [, COLS (columns)] [, INCLUDELONG | EXCLUDELONG] [, LOBSNEVER | LOBSALWAYS | LOBSIFCHANGED | LOBSALWAYSNOINDEX] [, NOKEY]
[
container
.]
owner
.
table
DB2 LUW、DB2 for z/OS、Oracle、SQL ServerおよびSybaseに有効です。
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
オプションを省略できます。そうでない場合は必須です。
NOSCHEDULINGCOLS | ALLCOLS
Oracleに有効
これらのオプションは、ADD TRANDATA
で指定している表を処理している統合Replicatのロギング要件を満たします。
NOSCHEDULINGCOLS
スケジュール列のロギングを無効にします。デフォルトで、ADD TRANDATA
は、主キーの無条件ロギング、指定した表のすべての一意キーおよび外部キーの条件付きサプリメンタル・ロギングを有効にします。無条件ロギングでは、主キーの値を、キーが現在の操作で変更されたかどうかにかかわらず、強制的にログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。主キー、一意キーおよび外部キーはすべて、依存関係を計算するインバウンド・サーバーから利用できる必要があります。統合Replicatの詳細は、Oracle DatabaseのためのOracle GoldenGateのインストールおよび構成を参照してください。
ALLCOLS
表のすべてのキーおよび非キー列の無条件サプリメンタル・ロギングを有効にします。このオプションは、依存関係の計算に必要なキーと、フィルタリング、競合の解決またはその他の目的で使用されるその他のすべての列のロギングを有効にします。
COLS (
columns
)
ADD TRANDATA
でサポートされるすべてのデータベースに有効。
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
、NOCOMPRESSUPDATES
およびNOCOMPRESSDELETES
パラメータがあります。この機能をサポートするには、トランザクション・ログのLONGVAR
列の設定を変更し、列値のビフォアおよびアフター・イメージ両方を含めるようにする必要があります。
LOBSNEVER | LOBSALWAYS | LOBSIFCHANGED | LOBSALWAYSNOINDEX
Sybaseに有効です。
指定した表のLOB
データを伝播する方法を制御します。
注意: AADD TRANDATA コマンドは、表に対して現在設定されているLOB設定を上書きします。その後に設定を変更するには、sp_setrepcol スクリプトを使用する必要があります。 |
LOBSNEVER
LOB
データは伝播されません。ただし例外があり、LOB列にNULL
値が挿入されるか、LOB列がINSERT
操作でスキップされた場合、Extractはトレイル内のこの列にNULL
データを書き込みます。
LOBSALWAYS
次の2つのことを行います: sp_setrepcol
を使用してLOB
レプリケーションをALWAYS_REPLICATE
(トランザクション内で変更されたかどうかにかかわらず、常にLOB
データをレプリケートする)に設定し、(sp_setreptable
のUSE_INDEX
オプションを使用して)レプリケーションで索引を使用するように表をマーク付けします。単一のトランザクション内でLOB
がレプリケーション対象としてマーク付けされると長時間かかる可能性があるので、USE_INDEX
を使用して各LOB
にグローバル非クラスタ化索引を作成してその時間を短縮します。グローバル非クラスタ化索引の作成中、共有表ロックは保持されます。
LOBSIFCHANGED
トランザクション中にLOBデータが変更された場合にLOB
データのみをレプリケートします。これにより、レプリケーションのオーバーヘッドは低減されますが、レプリケーション環境外のターゲットで発生する可能性がある不整合は防止できません。これはデフォルトです。
LOBSALWAYSNOINDEX
LOB
レプリケーションをALWAYS_REPLICATE
(トランザクション内で変更されたどうかにかかわらず、常にLOB
データをレプリケートする)に設定します。これによりオーバーヘッドは追加されますが、レプリケーション環境外のターゲットで発生する可能性がある不整合は防止できます。LOBSALWAYSNOINDEX
では、レプリケーションの索引を使用するように表をマーク付けしません。この設定のメリットは、ADD TRANDATA
の実行中にロックが保持されないことです。LOBSALWAYSNOINDEX
は、バージョン15より前のSybaseデータベースのデフォルトです。
注意: ALWAYS_REPLICATE オプションを使用しているときに、特定のLOB列にNULL 値が含まれている場合、表内の(LOBでない)他の列が更新されると、ALWAYS_REPLICATE を有効化していても、このLOBは取得されません。 |
表のLOB設定を確認するには、その表に対してADD TRANDATA
を使用した後に、INFO TRANDATA
コマンドを使用します。すべてのLOB列のLOB設定が表示されます。必要に応じて、Sybaseシステム・プロシージャを使用して特定の列のLOB設定を変更できます。
NOKEY
ADD TRANDATA
でサポートされるすべてのデータベースに有効。
主キー列のサプリメンタル・ロギングを抑止します。NOKEY
を使用する場合は、COLS
オプションを使用してキーとして機能できる別の列をロギングし、TABLE
またはMAP
パラメータのKEYCOLS
オプションを使用してこれらの列を代替キーとして指定します。
例
次の例では、Oracle表の主キーのロギング、SQL Server表の補足データのロギング、またはレプリケーション対象のSybase表のマーク付けのいずれかを行います。
ADD TRANDATA finance.acct
次の例では、acct
という名前の表のすべてのキーおよび非キー列の無条件サプリメンタル・ロギングを有効にします。
ADD TRANDATA acct ALLCOLS
次のOracleの例では、主キー、および非キー列nameおよびaddressをロギングします。
ADD TRANDATA finance.acct, COLS (name, address)
次のOracleの例では、主キーはロギングせず、かわりに非キー列のname
とpid
をロギングします。
ADD TRANDATA finance.acct, NOKEY, COLS (name, pid)
次のSybaseの例では、レプリケーション対象のacct
表にマーク付けし、トランザクション中に変更された場合にのみLOB
データをロギングするように指定します。
ADD TRANDATA finance.acct, LOBSIFCHANGED
次の例では、処理中のトランザクションを終了できるようにし、対象の表オブジェクトacct
でロックを取得します。
ADD TRANDATA acct PREPARECSN(LOCK)