CDCサプリメンタル・ロギングの有効化
CDC Extractでは、変更データを取得する方法としてSQL Serverチェンジ・データ・キャプチャ表が使用されるため、次の手順と要件に従い、Extractによって変更データが正しく有効化、保持および取得されるようにすることが重要です。
ADD TRANDATA
コマンドでサプリメンタル・ロギングを有効にすると、トランザクションの再構築に必要な情報をExtractで取得できます。
ADD TRANDATA
は、Oracle GoldenGateにより取得されるすべての表に対して発行する必要があり、そのためには、有効なスキーマを使用して、必要なOracle GoldenGateの表およびストアド・プロシージャを作成する必要があります。
CDC Extractのサプリメンタル・ロギングを有効にするには、次の手順を行います。
-
SQL Serverチェンジ・データ・キャプチャをデータベース・レベルで有効にします(まだ有効になっていない場合)。
-
EXECUTE sys.sp_cdc_enable_table
を実行することで、ベース表ごとにサプリメンタル・ロギングが有効なチェンジ・データ・キャプチャ・ステージング表を作成します。また、CDC表ごとにトリガーを作成します。CDC表は、データベース内のシステム表の一部として存在し、cdc.OracleGG_basetableobjectid_CT
のようなネーミング規則を持っています。 -
ネーミング規則が
ggschema.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の起動時に自動的に実行できるように設定されている必要があります。
ノート:
データベースに対してSQL Serverトランザクション・レプリケーションも有効になっている場合、CDCキャプチャ・ジョブは存在せず、かわりにSQL Serverログ・リーダー・エージェント・ジョブのみが存在します。
-
CDCキャプチャ・ジョブは、スループット向上のためにチューニングできます。チューニング情報は、CDCキャプチャ方法の操作上の考慮事項を参照してください。
-
Microsoftによって作成されるCDCクリーンアップ・ジョブは、Oracle GoldenGate ExtractがCDC表のデータを取得済であるかどうかに依存しません。そのため、追加のステップを実行して、
TRANDATA
が有効になった直後にCDCクリーン・アップ・ジョブを無効にするか削除し、Oracle GoldenGate専用のCDCクリーン・アップ・ジョブまたは変更データのパージ・タスクを有効にする必要があります。詳細はCDC表の履歴データの保持を参照してください。
-
チェンジ・データ・キャプチャでデータベースを有効にするために必要な権限およびステップ(まだ設定されていない場合)を確認するには、「データベース・ユーザーおよび権限の準備」のトピックを参照してください。データベースがCDCに対して有効になっていない場合は、GoldenGateに昇格したアクセス権が必要になる場合がありますが、管理者が手動でデータベースのチェンジ・データ・キャプチャを有効にすることで無効にすることができます。
-
Google Cloud SQL for SQL Serverでは、サービス管理ユーザーがチェンジ・データ・キャプチャに対してデータベースを手動で有効にし、次のコマンドを実行する必要があります。
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database';
-
SQL ServerおよびAzure SQL管理対象インスタンスの場合、
TRANDATA
を追加すると、ユーザーがsysadmin権限を持っている場合、チェンジ・データ・キャプチャのデータベースの設定が試行されます。それ以外の場合、データベース管理者は、ソース・データベースに対して次のコマンドを実行して、TRANDATA
を追加する前に、CDCのデータベースを手動で有効にできます:EXEC sys.sp_cdc_enable_db;
-
Amazon RDS for SQL Serverの場合、
TRANDATA
を追加すると、ユーザーにアクセス権が付与されている場合、チェンジ・データ・キャプチャ用のデータベースの設定も試行されます。それ以外の場合、マスター資格証明を持つデータベース管理者は、ソース・データベースに対して次のコマンドを実行して、TRANDATA
を追加する前に、CDCのデータベースを手動で有効にできます:EXEC msdb.dbo.rds_cdc_enable_db ‘source_database’
-
-
ソースのOracle GoldenGateインストールで、
GLOBALS
ファイルにパラメータGGSCHEMA schemaname
があり、ソース・データベースで使用されているスキーマ名(CREATE SCHEMA schemaname
)が作成されていることを確認します。このスキーマは、データベースで作成される後続のすべてのOracle GoldenGateコンポーネントで使用されるため、Oracle GoldenGateのみで使用される一意のスキーマ(ggschema
など)を作成し、SQL Serverスキーマのdbo
またはcdc
を使用しないことをお薦めします。 -
ソースのOracle GoldenGateシステムで、コマンドライン・インタフェース(管理クライアント)を開きます。
-
データベース・ログイン資格証明を使用してデータベースに接続します。
-
Extractによって取得される各表に対して次のコマンドを発行します。ワイルドカードを使用して複数の表の名前を指定できます
ADD TRANDATA owner.table
ADD TRANDATA owner.*
オプションで、SQL Serverチェンジ・データ・キャプチャのステージング表を配置するファイルグループを指定できます。その場合は、既存のファイルグループ名を指定した
FILEGROUP
オプションを使用します。ADD TRANDATA owner.table FILEGROUP cdctablesSee ADD TRANDATA
詳細は、ADD TRANDATAを参照してください。
GoldenGate CDCキャプチャを設定するサンプル・チュートリアルが用意されています:
Oracle GoldenGate for SQL Server CDCキャプチャ・レプリケーションOracle GoldenGate 19.1 for SQL Server CDCの使用。