CDCサプリメンタル・ロギングの有効化
CDC Extractでは、変更データを取得する方法としてSQL Serverチェンジ・データ・キャプチャ表が使用されるため、次の手順と要件に従い、Extractによって変更データが正しくロギング、保持および取得されるようにすることが重要です。
ADD TRANDATA
コマンドでサプリメンタル・ロギングを有効にすると、トランザクションの再構築に必要な情報をExtractで取得できます。
ADD TRANDATA
は、Oracle GoldenGateにより取得されるすべての表に対して発行する必要があり、そのためには、有効なスキーマを使用して、必要なOracle GoldenGateの表およびストアド・プロシージャを作成する必要があります。
CDC Extractのサプリメンタル・ロギングを有効にするには、次の手順を行います。
-
SQL Serverチェンジ・データ・キャプチャをデータベース・レベルで有効にします(まだ有効になっていない場合)。
-
EXECUTE sys.sp_cdc_enable_db
-
-
EXECUTE sys.sp_cdc_enable_table
を実行することで、ベース表ごとにサプリメンタル・ロギングが有効なチェンジ・データ・キャプチャ・ステージング表を作成します。また、CDC表ごとにトリガーを作成します。CDC表は、データベース内のシステム表の一部として存在し、cdc.OracleGG_basetableobjectid_CT
のようなネーミング規則を持っています。 -
ネーミング規則が
schema.OracleGGTranTables
のトラッキング表を作成します。この表を使用してCDC表のトランザクション・インジケータが格納され、CDC表のトリガーが起動されたときにこの表に移入されます。表はGLOBALS
ファイルのGGSCHEMA
パラメータにリストされたスキーマによって所有されます。 -
各CDC表に対して一意のフェッチ・ストアド・プロシージャを作成し、さらにExtractが機能するために必要なその他のストアド・プロシージャも作成します。ストアド・プロシージャは、
GLOBALS
ファイルのGGSCHEMA
パラメータにリストされたスキーマによって所有されます。 -
また、表に対するCDCの有効化の一環として、SQL Serverではデータベースごとに2つのジョブを作成します。
cdc.dbname_capture
cdc.dbname_cleanup
-
CDCキャプチャ・ジョブはSQL Serverのトランザクション・ログを読み取ってCDC表にデータを移入し、これらのCDC表からExtractはトランザクションを取得します。したがって、CDCキャプチャ・ジョブが常に実行されていることが非常に重要です。そのためには、SQL Serverエージェントが常に実行され、SQL Serverの起動時に自動的に実行できるように設定されている必要があります。
-
CDCキャプチャ・ジョブの重要なチューニング情報は、CDCキャプチャ方法の操作に関する考慮事項にあります。
-
Microsoftによって作成されるCDCクリーンアップ・ジョブは、Oracle GoldenGate ExtractがCDC表のデータを取得済であるかどうかに依存しません。そのため、追加のステップを行って、
TRANDATA
を有効にした直後にCDCクリーンアップ・ジョブを無効にするか削除し、Oracle GoldenGate専用のCDCクリーンアップ・ジョブを有効にする必要があります。詳細はCDC表の履歴データの保持を参照してください。
次のステップでは、SQL Serverのシステム管理者(sysadmin
)ロールのメンバーであるデータベース・ユーザーが必要です。