24 CDCキャプチャ方法の操作に関する考慮事項
この項では、SQL Server CDCキャプチャのオプション、機能および推奨設定に関する情報を示します。
内容は次のとおりです。
SQL Serverのチェンジ・データ・キャプチャのチューニング
-
データベースに対して「Auto Create Statistics」および「Auto Update Statistics」が有効になっていることを確認してください。
cdc.OracleGG_#####_CT
表、cdc.lsn_time_mapping
表およびOracleGGTranTables
表の統計の保守は、Extractのパフォーマンスおよびレイテンシにとって重要です。 -
SQL Serverチェンジ・データ・キャプチャ・ジョブは、SQL Serverのトランザクション・ログからデータを収集し、データベース内のチェンジ・データ・キャプチャ・ステージング表にロードします。
作成されるジョブの一部として、いくつかのチューニング・パラメータを使用できます。ジョブを最適にチューニングする方法の詳細は、次の記事を参照してください。 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キャプチャ方法の操作に関する考慮事項
Oracle GoldenGate CDCオブジェクトのバージョニング
-
OracleGG_object id_CT
という形式のOracle GoldenGateの変更トラッキング表。 -
fetch_database name_object id
という形式のストアド・プロシージャ -
OracleCDCExtract
、OracleGGCreateProcs
およびOracleGGCreateNextBatch
の各ストアド・プロシージャ。 -
ADD TRANDATA
コマンドが正常に完了すると、GLOBALSファイルに指定されたGGSCHEMA
にOracleGGVersion
という表が存在しない場合は、それがGGSCIによって作成されます。次に、GGSCIによって、
TRANDATA
セッションの開始時刻と終了時刻をトラッキングするレコードが表に挿入されます。Extractが起動するとき、内部的なバージョン番号と、OracleGGVersion
表に含まれるバージョン番号を比較することによって、それ自体とOracle GoldenGate CDCオブジェクトの一貫性が確認されます。バージョン番号が一致しない場合は、次のようなメッセージで異常終了します。ERROR OGG-05337 The Oracle GoldenGate CDC object versions on database, source, are not consistent with the expected version, 2. The following versions(s) were found: 1. Rerun ADD TRANDATA for all tables previously enabled, including heartbeat, heartbeat seed, and filter tables.
親トピック: CDCキャプチャ方法の操作に関する考慮事項
SQL Serverチェンジ・データ・キャプチャに対して有効なExtractパラメータと無効なパラメータ
この項では、CDCキャプチャ方法に使用されるパラメータについて説明します。CDCキャプチャ方法のサポート対象およびサポート対象外パラメータの詳細は、『Oracle GoldenGateリファレンス』を参照してください。
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の場合、これらのパラメータは無効です。
TRANLOGOPTIONS ALWAYSONREADONLYROUTING
ALWAYSONREADONLYROUTING
パラメータを使用すると、Always On可用性グループ・リスナーに接続しているときに、SQL ServerのExtractは読取り専用処理を使用可能な読取り用セカンダリにルーティングできるようになります。
TRANLOGOPTIONS QUERYTIMEOUT
SQL Serverへの問合せで、タイムアウト・エラー・メッセージを報告するまでに結果を待機する時間を指定します。このオプションは整数値を使用して秒数を表します。デフォルトの問合せタイムアウト値は300秒(5分)です。最小値は0秒です(無限タイムアウト)。最大値は2147483645秒です。
TRANLOGOPTIONS TRANCOUNT
SQL Serverのチェンジ・データ・キャプチャのステージング表からデータをプルするための、Extractによる1コール当たりの処理されるトランザクションの数を調整できます。トランザクションのワークロードに基づいて、この値を調整した場合は、キャプチャ率のスループットが向上する可能性がありますが、すべてのワークロードがよい影響を受けるわけではありません。最小値は1、最大値は100です。デフォルトは10です。
親トピック: CDCキャプチャ方法の操作に関する考慮事項
Oracle GoldenGate CDCクリーンアップ・プロセスの詳細
Oracle GoldenGate CDCクリーン・アップ・ジョブは、デフォルトでCDC Extractが必要になります(ExtractがTRANLOGOPTIONS MANAGECDCCLEANUP
にデフォルト設定されているため)。これは、Windowsバッチ・ファイル(ogg_cdc_cleanup_setup.bat
)からインストールされ、SQL Serverデータベースに接続して必要なオブジェクトとジョブを作成するためにsqlcmd
を使用します。
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. DELETE EXTRACT extract_name
を使用してExtractが削除されていることを確認します
2. ソース・システムでコマンド・プロンプトを開き、Oracle GoldenGateインストール・フォルダを変更します。
3. ogg_cdc_cleanup_setup.bat/.sh
ファイルを実行し、次の変数値を指定します:
ogg_cdc_cleanup_setup.bat deleteExtCheckpoint userid password databasename servername\instancename schema
例: ogg_cdc_cleanup_setup.bat deleteExtCheckpoint 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 12c (12.3.0.1)以前のクラシックExtractからOracle GoldenGate 19c CDC Extractへの変更を予定している場合は、クラシックExtractのインストール方法を使用して実装したサプリメンタル・ロギングを削除し、CDC Extractインストール・バイナリを使用してサプリメンタル・ロギングを再度有効にする必要があります。この2つのバージョンでは、TRANDATA
を有効にする呼出しが異なり、CDC ExtractではクラシックExtractのTRANDATA
の実装がサポートされないためです。
次の一般的なガイドラインに従ってサプリメンタル・ロギングを削除してから再度有効にしてください。本番システムでクラシックからCDC Extractに移行する場合は、特別な配慮とプランニングが必要です。ここに示す情報は、すべての要件について説明するものではありません。サプリメンタル・ロギングに関する一般的な要件としてのみ提供される情報です。
-
ログに残ったすべてのデータがクラシックExtractによって処理されていて、正常に停止できることを確認します。
-
その他のレプリケーション・コンポーネントまたはCDCコンポーネントに関してExtractを実行した方法によって、次のいずれかを実行します。
-
Extractが同じデータベースに対してSQL Serverトランザクション・レプリケーションまたはOracle以外のCDC構成と平行して実行されていなかった場合は、Management Studioで問合せセッションを開いてソース・データベースに対して次の文を発行し、すべてのCDCまたはレプリケーション・コンポーネントを無効にして削除し、2次切捨てポイントを消去します。
EXEC sys.sp_cdc_disable_db
-
Extractが同じデータベースに対してSQL Serverトランザクション・レプリケーションまたはOracle以外のCDC構成と並行して実行されていた場合は、クラシックExtractのインストール・フォルダからGGSCIを実行し、
DBLOGIN
を使用してソース・データベースにログインし、Extract構成に含まれる表ごとに次のコマンドを発行します。 ワイルドカードを使用して複数の表の名前を指定できますDELETE TRANDATA owner.table
DELETE TRANDATA owner.*
-
-
ハートビート表エントリがインストールされていた場合は削除します。
DELETE HEARTBEATTABLE
-
Oracle GoldenGate CDC Extractインストール・バイナリを使用し、「Oracle GoldenGateのためのデータベースの準備 — CDCキャプチャ」のステップに従って、サプリメンタル・ロギングおよびその他の必要なコンポーネントを再度有効にし、ハートビート表を再度追加します。
親トピック: CDCキャプチャ方法の操作に関する考慮事項
CDCデータを保持するソース・データベースのリストア
CDCで有効になっているSQL Serverデータベースをリストアし、データベースにすでに蓄積されている既存のCDCステージング・データとCDC設定を保持する場合は、RESTORE
文でKEEP_CDC
オプションを指定する必要があります。
この要件は、データベースを新しいインスタンスにリストアする場合、またはデータベース名が異なる同じインスタンスにリストアする場合にのみ必要です。インスタンス上の元のデータベースをリストアする場合、このオプションは必要ありません。
詳しい要件と解説は、次に示すMicrosoftのドキュメントへのリンクを参照してください。
また、CDCキャプチャ・ジョブとOracle GoldenGate CDCクリーン・アップ・ジョブを手動で再作成する必要があります。
親トピック: CDCキャプチャ方法の操作に関する考慮事項