24 CDCキャプチャ方法の操作に関する考慮事項

この項では、SQL Server CDCキャプチャのオプション、機能および推奨設定に関する情報を示します。

内容は次のとおりです。

SQL Serverのチェンジ・データ・キャプチャのチューニング

次の情報は、Extractの取得パフォーマンスの向上に役立ちます。
  • データベースに対して「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’,

Oracle GoldenGate CDCオブジェクトのバージョニング

Oracle GoldenGateには、サプリメンタル・ロギングを有効化するときにOracle GoldenGateによって作成されるCDCオブジェクトをトラッキングするための、バージョン・トラッキング・サブシステムが備えられています。これらのオブジェクトは次のとおりです。
  • OracleGG_object id_CTという形式のOracle GoldenGateの変更トラッキング表。

  • fetch_database name_object idという形式のストアド・プロシージャ

  • OracleCDCExtractOracleGGCreateProcsおよびOracleGGCreateNextBatchの各ストアド・プロシージャ。

  • ADD TRANDATAコマンドが正常に完了すると、GLOBALSファイルに指定されたGGSCHEMAOracleGGVersionという表が存在しない場合は、それが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.

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です。

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

クラシック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に移行する場合は、特別な配慮とプランニングが必要です。ここに示す情報は、すべての要件について説明するものではありません。サプリメンタル・ロギングに関する一般的な要件としてのみ提供される情報です。

  1. ログに残ったすべてのデータがクラシックExtractによって処理されていて、正常に停止できることを確認します。

  2. その他のレプリケーション・コンポーネントまたは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.*

  3. ハートビート表エントリがインストールされていた場合は削除します。

    DELETE HEARTBEATTABLE

  4. Oracle GoldenGate CDC Extractインストール・バイナリを使用し、「Oracle GoldenGateのためのデータベースの準備 — CDCキャプチャ」のステップに従って、サプリメンタル・ロギングおよびその他の必要なコンポーネントを再度有効にし、ハートビート表を再度追加します。

CDCデータを保持するソース・データベースのリストア

CDCで有効になっているSQL Serverデータベースをリストアし、データベースにすでに蓄積されている既存のCDCステージング・データとCDC設定を保持する場合は、RESTORE文でKEEP_CDCオプションを指定する必要があります。

この要件は、データベースを新しいインスタンスにリストアする場合、またはデータベース名が異なる同じインスタンスにリストアする場合にのみ必要です。インスタンス上の元のデータベースをリストアする場合、このオプションは必要ありません。

詳しい要件と解説は、次に示すMicrosoftのドキュメントへのリンクを参照してください。

https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-arguments-transact-sql?view=sql-server-ver15

また、CDCキャプチャ・ジョブとOracle GoldenGate CDCクリーン・アップ・ジョブを手動で再作成する必要があります。