主コンテンツへ
Oracle® Fusion Middleware Oracle GoldenGateリファレンスfor Windows and UNIX
12c (12.2.0.1)
E70112-04
目次へ移動
目次

前
次

1.70 ADD TRANDATA

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 TRANDATAEXCLUDELONGオプションを使用することで、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 TRANDATACOLSオプションとともに使用して、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 [JOURNAL library/journal]} 
[, NOSCHEDULINGCOLS | ALLCOLS] 
[, COLS (columns)] 
[, INCLUDELONG | EXCLUDELONG] 
[, LOBSNEVER | LOBSALWAYS | LOBSIFCHANGED | LOBSALWAYSNOINDEX] 
[, NOKEY] 
[, PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]
[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 TABLEINCLUDE 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列を含む表のビフォア・イメージを必要とする機能がサポートされません。この機能の例として、GETUPDATEBEFORESNOCOMPRESSUPDATESおよび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_setreptableUSE_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オプションを使用してこれらの列を代替キーとして指定します。

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}

DMLとDDLの両方に有効です。Oracle Datapump Exportのダンプ・ファイルにインスタンス化CSNが設定されるよう、ソースの表を自動的に準備します。Replicatは、(インポート時に) Oracle Datapumpによって設定された表ごとのインスタンス化CSNを使用して、証跡レコードをフィルタ処理で除外します。ターゲット上では、データ・ポンプ・インポートがDBOPTIONS ENABLE_INSTANTIATION_FILTERINGパラメータを使用して、システム表とビューにインスタンス化SCNを移入し、表レベルのインスタンス化フィルタリングを有効にします。

WAIT

インフライト・トランザクションを待機し、表のインスタンス化を準備します。

LOCK

表にロックを設定します(表のインスタンス化を準備するため)。

NOWAIT

デフォルトの動作。インスタンス化の準備が即時実行されます。

NONE

インスタンス化の準備は行われません。

例1   

次の例では、Oracle表の主キーのロギング、SQL Server表の補足データのロギング、またはレプリケーション対象のSybase表のマーク付けのいずれかを行います。

ADD TRANDATA finance.acct
例2   

次の例では、acctという名前の表のすべてのキーおよび非キー列の無条件サプリメンタル・ロギングを有効にします。

ADD TRANDATA acct ALLCOLS
例3   

次のOracleの例では、主キー、および非キー列nameおよびaddressをロギングします。

ADD TRANDATA finance.acct, COLS (name, address)
例4   

次のOracleの例では、主キーはロギングせず、かわりに非キー列のnamepidをロギングします。

ADD TRANDATA finance.acct, NOKEY, COLS (name, pid)
例5   

次のSybaseの例では、レプリケーション対象のacct表にマーク付けし、トランザクション中に変更された場合にのみLOBデータをロギングするように指定します。

ADD TRANDATA finance.acct, LOBSIFCHANGED
例6   

次の例では、ロギングが追加されますが、表のインスタンス化の準備は行われません。

ADD TRANDATA acct PREPARECSN NONE