22 CDCキャプチャ方法の操作に関する考慮事項
この項では、SQL Server CDCキャプチャのオプション、機能および推奨設定に関する情報を示します。
SQL Serverのチェンジ・データ・キャプチャ・ジョブのチューニング
SQL Serverチェンジ・データ・キャプチャ・ジョブは、SQL Serverのトランザクション・ログからデータを収集し、データベース内のCDCステージング表にロードします。
作成されるジョブの一部として、いくつかのチューニング・パラメータを使用できます。ジョブを最適にチューニングする方法の詳細は、次の記事を参照してください。https://technet.microsoft.com/en-us/library/dd266396(v=sql.100).aspx
一般的な推奨事項として、SQL Serverチェンジ・データ・キャプチャ・ジョブのポーリング間隔をデフォルトの5秒から1秒に変更することをお薦めします。
CDCキャプチャ・ジョブのデフォルトのポーリング間隔を変更するには、データベースに対して次の問合せを実行します。
EXEC [sys].[sp_cdc_change_job]
@job_type = N'capture’ ,
@pollinginterval = 1,
GO
—stops cdc job
EXEC [sys].[sp_cdc_stop_job]
@job_type = N'capture’
GO
—restarts cdc job for new polling interval to take affect
EXEC [sys].[sp_cdc_start_job]
@job_type = N'capture’
親トピック: CDCキャプチャ方法の操作に関する考慮事項
SQL Serverチェンジ・データ・キャプチャの有効なパラメータと無効なパラメータ
この項では、CDCキャプチャ方法に使用されるパラメータについて説明します。CDCキャプチャ方法でサポートされるパラメータとサポートされないパラメータの詳細は、Oracle GoldenGateリファレンスfor Windows and UNIXを参照してください。
TRANLOGOPTIONS LOB_CHUNK_SIZE
ラージ・オブジェクトをサポートするために、ExtractパラメータLOB_CHUNK_SIZE
がCDCキャプチャ方法に追加されました。非常に大きいLOBデータ・サイズの場合、LOB_CHUNK_SIZE
をデフォルトの4000バイトから最大65535バイトまで調整できるため、フェッチ・サイズを大きくして、LOB全体をフェッチするために必要なトリップ回数を削減できます。
例: TRANLOGOPTIONS LOB_CHUNK_SIZE 8000
TRANLOGOPTIONS MANAGECDCCLEANUP/NOMANAGECDCCLEANUP
ExtractパラメータMANAGECDCCLEANUP/NOMANAGECDCCLEANUP
は、Oracle GoldenGate CDCクリーンアップ・ジョブでリカバリ・チェックポイント・データを維持するかどうかをExtractに指示するために、CDCキャプチャ方法で使用されます。デフォルト値はMANAGECDCCLEANUP
です。これは明示的にExtractにリストする必要はありません。ただし、Extractを起動する前にOracle GoldenGate CDCクリーンアップ・ジョブを作成する必要があります。MANAGECDCCLEANUP
はすべての本番環境で使用する必要があります。NOMANAGECDCCLEANUP
は必要に応じて一時実装またはテスト実装で使用できます
例: TRANLOGOPTIONS MANAGECDCCLEANUP
TRANLOGOPTIONS EXCLUDEUSER/EXCLUDETRANS
SQL ServerのCDCキャプチャ・ジョブは、ユーザー情報またはトランザクションに関連付けられたトランザクション名は取得しません。この情報はCDCステージング表のログに記録されないため、Extractでは特定のユーザーのDMLまたは特定のトランザクション名のDMLを除外できません。したがって、 EXCLUDEUSER
およびEXCLUDETRANS
パラメータはCDCキャプチャ処理では無効です。
TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT/NOMANAGESECONDARYTRUNCATIONPOINT/ACTIVESECONDARYTRUNCATIONPOINT
SQL Serverチェンジ・データ・キャプチャ・ジョブは、Oracle GoldenGate CDCキャプチャ方法を使用する場合にトランザクション・ログからデータを取得する唯一のプロセスです。そのため、2次切捨てポイントの管理はExtractでは処理されず、チェンジ・データ・キャプチャのExtractの場合、これらのパラメータは無効です。
親トピック: CDCキャプチャ方法の操作に関する考慮事項
Oracle GoldenGate CDCクリーンアップ・プロセスの詳細
デフォルトでは、CDC ExtractにOracle GoldenGate CDCクリーンアップ・ジョブが必要です。ExtractのデフォルトはTRANLOGOPTIONS MANAGECDCCLEANUP
で、Windowsバッチ・ファイル(ogg_cdc_cleanup_setup.bat
)からインストールされるためです。これはsqlcmd
を使用してソースSQL Serverデータベースに接続し、必要なオブジェクトとジョブを作成します。
CDCキャプチャが有効な各データベースに1つのジョブが必要なため、このドキュメントの「Oracle GoldenGateのためのデータベースの準備 — CDCキャプチャ」の項の手順に従って、ジョブとオブジェクトを作成する必要があります。
このユーティリティには他のオプションもありますが、これらについては後述します。
この手順には、SQL Serverのシステム管理者(sysadmin
)ロールのメンバーであるSQL Serverで認証されたデータベース・ユーザーが必要です。Windows認証は、.batバイナリの場合はサポートされません。
データベースからのExtractの削除
Oracle GoldenGate CDCクリーンアップ・オブジェクト表がある場合、そのデータベースに対して起動された各CDC Extractにより、OracleGGExtractCheckpoint
表にエントリが作成されます。このエントリは特定のExtractのある時点のリカバリ・チェックポイントをトラッキングし、Oracle GoldenGate CDCクリーンアップ・タスクのカットオフLSNとして使用します。複数のExtractが実行中の場合、それぞれが表のより新しいリカバリ・チェックポイントをロギングしますが、OracleGGExtractCheckpoint
表のエントリを削除せずに、システムから1つのExtractが削除されていると、すべてのCDCステージング表について、削除されたExtractの古いリカバリ・チェックポイントより新しいデータはパージされません。したがって、データベースからExtractを削除する場合、データベースに対して複数のExtractが実行されているときは、次の手順に従って、OracleGGExtractCheckpoint
表からExtractを削除してください。
1. GGSCI: DELETE EXTRACT <extname>
を使用して、Extractが削除されていることを確認します
2. ソース・システムでコマンド・プロンプトを開き、Oracle GoldenGateインストール・フォルダを変更します。
3. ogg_cdc_cleanup_setup.bat
ファイルを実行し、次の変数値を指定します。
ogg_cdc_cleanup_setup.bat deleteExtCheckpoint <userid> <password> <databasename> <servername\instancename> <schema>
例: ogg_cdc_cleanup_setup.bat deleteExtCheckoint ggsuser ggspword db1 server1\inst1 ogg
4. 削除するExtractの名前を入力するよう求められます。入力したら、[Enter]/[Return]キーを押して続行します。
Oracle GoldenGate CDCクリーンアップ・ジョブの変更
データベースのOracle GoldenGate CDCクリーン・アップ・ジョブのデフォルトのスケジュール、保存期間および操作バッチ・サイズに基づき、ジョブの実行間隔は10分ごと、データ保存ポリシーは72時間(4320分として表示)になり、保存ポリシーが満たされるまでトランザクションごとに500レコードのバッチでパージしてExtractのリカバリ・チェックポイント・データを超えないようにします。
顧客環境での変化やデータ表のデータ保存要件の変更のために、これらのプロパティを調整してパージ・バッチ・サイズを増やしたり、保存ポリシーおよびジョブ実行時スケジュールを調整することが必要になる場合があります。
ジョブの実行頻度を調整するには、SQL Serverエージェント内のOracleGGCleanup_dbname_Job
ジョブのスケジュールを手動で変更します。保存期間またはパージ・バッチ・サイズを調整する必要がある場合は、SQL Serverエージェント内のOracleGGCleanup_dbname_Job
ジョブのジョブ・ステップを手動で編集する必要があります。ジョブ・ステップは2つのパラメータをクリーン・アップ・ストアド・プロシージャに渡します。@retention_minutes
の値を変更して必要に応じてデータ保存ポリシーを調整したり、@threshold
値を変更してパージ・バッチ・サイズを増減することができます。トランザクションの多い環境では、@threshold
値を10000などの数値に増やすことが必要になる場合があります。各サイクル内でジョブの実行にかかる時間のモニタリングを利用して、有効な@threshold
値を決定できます。
Oracle GoldenGate CDCクリーンアップ・ジョブの削除
Oracle GoldenGate CDCクリーンアップ・ジョブおよび関連付けられたオブジェクトが不要になり、削除する必要がある場合は次の手順を行います。
1. コマンド・プロンプトを開き、Oracle GoldenGateインストール・フォルダを変更します。
2. ogg_cdc_cleanup_setup.bat
ファイルを実行し、次の変数値を指定します。
ogg_cdc_cleanup_setup.bat dropJob <userid> <password> <databasename> <servername\instancename> <schema>
例: ogg_cdc_cleanup_setup.bat dropJob ggsuser ggspword db1 server1\inst1 ogg
親トピック: CDCキャプチャ方法の操作に関する考慮事項
クラシックExtractからCDC Extractへの変更
Oracle GoldenGate 12.3以前のクラシックExtractからCDC Extractへの変更を予定している場合は、クラシックExtractインストール方法で実装されたサプリメンタル・ロギングを削除し、CDC Extractインストール・バイナリを使用してサプリメンタル・ロギングを再度有効にする必要があります。この2つのバージョンでは、TRANDATA
を有効にする呼出しが異なり、クラシックExtractのTRANDATA
の実装はCDC Extractではサポートされないためです。
次の一般的なガイドラインに従ってサプリメンタル・ロギングを削除し、再度有効にしてください。本番システムでクラシックからCDC Extractに移行する場合は、特別な考慮と計画が必要です。ここで取り上げる情報はすべての要件をカバーするわけではなく、サプリメンタル・ロギングに関する一般的な要件のみ説明します。
1. ログに残ったすべてのデータがクラシックExtractによって処理されていて、正常に停止できることを確認します。
-
1 Extractが同じデータベースに対してSQL Serverトランザクション・レプリケーションまたはOracle以外のCDC構成と平行して実行されていなかった場合は、Management Studioで問合せセッションを開いてソース・データベースに対して次の文を発行し、すべてのCDCまたはレプリケーション・コンポーネントを無効にして削除し、2次切捨てポイントを消去します。
EXEC sys.sp_cdc_disable_db
-
2. Extractが同じデータベースに対してSQL Serverトランザクション・レプリケーションまたはOracle以外のCDC構成と並行して実行されていた場合は、クラシックExtractのインストール・フォルダからGGSCIを実行し、
DBLOGIN
を使用してソース・データベースにログインし、Extract構成に含まれる表ごとに次のコマンドを発行します。 ワイルドカードを使用して複数の表の名前を指定できますDELETE TRANDATA owner.table DELETE TRANDATA owner.*
3. ハートビート表エントリがインストールされていた場合は削除します。
DELETE HEARTBEATTABLE
4. Oracle GoldenGate CDC Extractインストール・バイナリを使用し、「Oracle GoldenGateのためのデータベースの準備 — CDCキャプチャ」の手順に従って、サプリメンタル・ロギングおよびその他の必要なコンポーネントを再度有効にし、ハートビート表を再度追加します。
親トピック: CDCキャプチャ方法の操作に関する考慮事項