CDCキャプチャ方法の操作に関する考慮事項
SQL Server CDCキャプチャのオプション、機能および推奨設定について学習します。
SQL Serverのチェンジ・データ・キャプチャのチューニング
-
「統計の自動作成」および「統計の自動更新」がデータベースに対して有効になっていることを確認します。
cdc.OracleGG_#####_CT tables
、cdc.lsn_time_mapping table
および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オブジェクトのバージョニング
-
OracleGG_object id_CT
という形式のOracle GoldenGateの変更トラッキング表。 -
fetch_database name_object id
という形式のストアド・プロシージャ -
OracleCDCExtract
、OracleGGCreateProcs
およびOracleGGCreateNextBatch
の各ストアド・プロシージャ。 -
ADD TRANDATA
コマンドが正常に完了すると、Oracle GoldenGateは、GLOBALSファイルに指定されているGGSCHEMA
の下にOracleGGVersion
という表を作成します(まだ存在しない場合)。次に、Oracle GoldenGateは、
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, 6. The following versions(s) were found: 3. Rerun ADD TRANDATA for all tables previously enabled, including heartbeat, heartbeat seed, and filter tables.
SQL Serverチェンジ・データ・キャプチャでサポートされているExtractのパラメータとサポートされていないパラメータ
この項では、CDCキャプチャ方法に使用されるパラメータについて説明します。
次の表に、サポートされているパラメータとサポートされていないパラメータを示します。
サポートされているパラメータ | サポートされていないパラメータ |
---|---|
TRANLOGOPTIONS |
TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT/NOMANAGESECONDARYTRUNCATIONPOINT/ACTIVESECONDARYTRUNCATIONPOINT |
ALWAYSONREADONLYROUTING |
- |
TRANLOGOPTIONS LOB_CHUNK_SIZE |
- |
TRANLOGOPTIONS MANAGECDCCLEANUP/NOMANAGECDCCLEANUPTRANLOGOPTIONS |
- |
TRANLOGOPTIONS QUERYTIMEOUT |
- |
TRANLOGOPTIONS TRANCOUNT |
- |
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
は必要に応じて一時実装またはテスト実装で使用できます
Example: 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
パラメータを使用すると、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 Extractに必要になります(ExtractがデフォルトでTRANLOGOPTIONS MANAGECDCCLEANUP
に設定されているため)。
CDCキャプチャでは、データベースごとにパージ・タスクが1つのみ有効になっている必要があります。また、このドキュメントの「Oracle GoldenGateのためのデータベースの準備」の項に記載されているステップを使用してタスクを作成する必要があります。
Oracle GoldenGateのチェンジ・データのパージタスクの変更
デフォルトのパージ・タスク頻度スケジュールは10分単位の実行であり、Oracle GoldenGateのチェンジ・データのパージタスクのデータ保存期間は、インストールされているOracle GoldenGateのバージョンに応じて3日か1時間のデータ保存ポリシーとなります。
お客様固有の要件がある場合は、保存期間(「ルールの保持」
オプション)とタスク実行時間スケジュール(「パージ頻度」
オプション)の調整が必要になることがあります。
「ルールの保持」
オプションにより、ソース・データベースに保持するCDCステージング・データの量(時間数か日数)が決まります。デフォルト値は、インストールされているOracle GoldenGateのバージョンに応じて、3日か1時間になります。CDCデータの保存期間を短くすると、データベースに格納されるCDCステージング・データの量が減りますが、ユーザーがExtractをステージング表内のあるデータより前の時点に戻すことができる可能性が狭まります。通常は、既存のExtractを以前の時点に戻す必要はありません。そのため、より多くのステージング・データをデータベース内に残す必要がある特殊な状況の場合を除き、新しいデフォルト設定である1時間を使用することをお薦めします。ただし、この値を長い保存期間から非常に短い保存期間に変更すると、次回のタスク・スケジュール実行時に大量のトランザクション・ログ領域とシステム・オーバーヘッドが必要になる可能性があることに注意してください。そのため、時間をかけて徐々に「ルールの保持」
の値を小さくしていき、目的となる最終的な値にすることをお薦めします。
「パージ頻度」
は、タスクの実行頻度を表します。デフォルト値は10分単位です。ユーザー・アクティビティが多い期間にパージ・タスクによるオーバーヘッドがデータベース・パフォーマンスに影響する場合を除き、デフォルト値のままにすることをお薦めします。
- 「構成」ページの「タスク」をクリックして、「タスク」ページを開きます。
- 「タスク」ページでチェンジ・データのパージをクリックします。
- 既存のタスクの横にある「タスクの変更」アイコンをクリックします。
- 必要に応じて、「ルールの保持」オプションや「パージ頻度」オプションの値を変更します。
- 「送信」をクリックして変更を保存します。
Oracle GoldenGateのチェンジ・データのパージタスクの削除
データベースのチェンジ・データのパージタスクの削除は、その特定のデータベースに対するキャプチャが構成されているExtractがない場合にのみ実行されるようにする必要があります。
- 「構成」ページの「タスク」をクリックして、「タスク」ページを開きます。
- 「タスク」ページでチェンジ・データのパージをクリックします。
- 削除するタスクの横にある「タスクの削除」アイコンをクリックします。
クラシックExtractからCDC Extractへの更新
Oracle GoldenGate 12c (12.3.0.1)以前のクラシックExtractからOracle GoldenGate 23aiの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のためのデータベースの準備」のステップに従って、サプリメンタル・ロギングおよびその他の必要なコンポーネントを再度有効にし、ハートビート表を再度追加します。