CDCステージング・データのパージ

サプリメンタル・ロギングを有効にすると、Extractでトランザクションを再構成するために必要なデータが一連のSQL Server CDCシステム表に格納され、さらに、トランザクション内で操作をトラッキングするために使用されるOracle GoldenGateオブジェクトも格納されます。サプリメンタル・ロギングを有効にする際に、SQL Serverは自身のチェンジ・データ・キャプチャ・クリーンアップ・ジョブを作成し、デフォルトではこれを夜間に実行して、72時間より古いデータをパージします。SQL Server CDCのクリーン・アップ・ジョブは、Extractが該当するCDCシステム表のデータを引き続き必要とする可能性があることを認識しないため、Extractがキャプチャする前にそのデータを削除してしまうことがあります。

処理中にExtractが必要とするデータがCDCシステム表から削除されている場合、次のいずれかの修正処理が必要になる可能性があります。

  • Extractを変更して、CDCデータが使用可能になった後の時点から取得します(さらにターゲットで起こり得るデータ損失を受け入れます)。

  • ソース表とターゲット表を再同期してから、Oracle GoldenGate環境を再開します。

この状況を修正するために、Oracle GoldenGate for SQL Serverには、Oracle GoldenGateクリーン・アップ・ジョブ関連のストアド・プロシージャおよび表の作成に使用されるogg_cdc_cleanup_setup.batプログラムが含まれています。

デフォルトでは、ExtractはこれらのOracle GoldenGateクリーン・アップ・ジョブ・オブジェクトが存在すると想定していて、存在しない場合は停止します。SQL Server CDCクリーン・アップ・ジョブとOracle GoldenGateクリーン・アップ・ジョブが同時に存在していると、Extractは警告を発行します。

Oracle GoldenGate CDCクリーン・アップ・ジョブ・タスク・オブジェクトに対するExtractのデフォルト・チェックは、ExtractのTRANLOGOPTIONS NOMANAGECDCCLEANUPを使用して上書きできますが、この上書きは開発やテストを目的としている場合のみにしてください。

サプリメンタル・ロギングを有効にした直後、かつExtractを起動する前に、次のステップを使用して、Oracle GoldenGate CDCクリーンアップ・ジョブおよび関連付けられたオブジェクトを作成してください。オブジェクトが手動で削除された場合など、これらのステップを再実行してこの機能を再度有効にできます。

Oracle GoldenGate CDCクリーンアップ・ジョブおよびオブジェクトの作成手順:

ogg_cdc_cleanup_setupファイルは、Classic Architectureのホーム・ディレクトリにあります。

スクリプトはMicrosoftのsqlcmdユーティリティを使用するため、Oracle GoldenGateがインストールされているシステムにsqlcmdがインストールされていることを確認してください。

これには、SQL Serverのシステム管理者(sysadmin)ロールのメンバーであるSQL Serverで認証されたデータベース・ユーザーが必要です。Windows認証は、.batスクリプトではサポートされません。

  1. SQL ServerエージェントからデータベースのSQL Serverのcdc.dbname_cleanupジョブを停止し、無効にします。または、次のコマンドでソース・データベースからドロップできます

    EXECUTE sys.sp_cdc_drop_job 'cleanup'
  2. ogg_cdc_cleanup_setup.batファイルを実行し、次の変数値を指定します。

    Windowsの場合:

    ogg_cdc_cleanup_setup.bat createJob userid password databasename servername\instancename schema

    Linuxの場合:

    ./ogg_cdc_cleanup_setup.sh createJob userid password databasename "servername,port" schema

    前の例で、USER IDとパスワードは、sysadmin権限を持つユーザーの有効なSQL Serverログインとパスワードにする必要があります。databasename servername\instancenameまたはservernameportは、ソース・データベース名、サーバーおよびインスタンス、またはSQL Serverが稼働しているサーバーとTCP/IPポートです。サーバー名のみがリストされている場合、デフォルトのインスタンスに接続されます。schemaは、GLOBALSファイルにGGSCHEMAパラメータとともにリストされているスキーマ名です。このスキーマは、サプリメンタル・ロギング、チェックポイント表、ハートビート表およびOracle GoldenGate CDCクリーンアップ・ジョブなど、すべてのOracle GoldenGateオブジェクトで同一の必要があります。

    たとえば:

    ogg_cdc_cleanup_setup.bat createJob ggsuser ggspword db1 server1\inst1 ogg
    接続文字列でserver,portを使用する場合は、次のように文字列を二重引用符で囲みます。
    ogg_cdc_cleanup_setup.bat createJob login password source database "sql2016.samplestring.us-west-1.rds.amazonaws.com,1433" OGG schema name

Oracle GoldenGate CDCクリーンアップ・ジョブは作成時に、10分ごとに実行されるようにスケジュールされ、デフォルトの保存期間は72時間になります。ただし、保存期間に関係なく、ジョブによってExtractのリカバリ・チェックポイントのデータはパージされません。

Oracle GoldenGate CDCクリーンアップ・ジョブの詳細は、CDCキャプチャ方法の操作に関する考慮事項にあります。