Oracle GoldenGateのためのデータベースの準備

SQL ServerのExtractによるキャプチャに使用するソース・データベースの表でサプリメンタル・ロギングを有効にする方法と、古いCDCステージング・データをパージする方法について学習します。

CDCキャプチャの詳細は、次を使用して学習できます。

SQL Server CDCキャプチャ・レプリケーションのためのOracle GoldenGateの使用http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/sql_cdcrep/sql_cdcrep.html

CDCサプリメンタル・ロギングの有効化

CDC Extractでは、変更データを取得する方法としてSQL Serverチェンジ・データ・キャプチャ表が使用されるため、次の手順と要件に従い、Extractによって変更データが正しく有効化、保持および取得されるようにすることが重要です。

ADD TRANDATAコマンドでサプリメンタル・ロギングを有効にすると、トランザクションの再構築に必要な情報をExtractで取得できます。

ADD TRANDATAは、Oracle GoldenGateにより取得されるすべての表に対して発行する必要があり、そのためには、有効なスキーマを使用して、必要なOracle GoldenGateの表およびストアド・プロシージャを作成する必要があります。

CDC Extractのサプリメンタル・ロギングを有効にするには、次の手順を行います。

  • SQL Serverチェンジ・データ・キャプチャをデータベース・レベルで有効にします(まだ有効になっていない場合)。

  • EXECUTE sys.sp_cdc_enable_tableを実行することで、ベース表ごとにサプリメンタル・ロギングが有効なチェンジ・データ・キャプチャ・ステージング表を作成します。また、CDC表ごとにトリガーを作成します。CDC表は、データベース内のシステム表の一部として存在し、cdc.OracleGG_basetableobjectid_CTのようなネーミング規則を持っています。

  • ネーミング規則がggschema.OracleGGTranTablesのトラッキング表を作成します。この表は、CDC表のトランザクション・インジケータを格納するために使用され、CDC表のトリガーが起動されたときに移入されます。表はGLOBALSファイルのGGSCHEMAパラメータにリストされたスキーマによって所有されます。

  • 各CDC表に対して一意のフェッチ・ストアド・プロシージャを作成し、さらにExtractが機能するために必要なその他のストアド・プロシージャも作成します。ストアド・プロシージャは、GLOBALSファイルのGGSCHEMAパラメータにリストされたスキーマによって所有されます。

  • また、表に対するCDCの有効化の一環として、SQL Serverではデータベースごとに2つのジョブを作成します。

    cdc.dbname_capture

    cdc.dbname_cleanup

  • CDCキャプチャ・ジョブはSQL Serverのトランザクション・ログを読み取ってCDC表にデータを移入し、これらのCDC表からExtractはトランザクションを取得します。したがって、CDCキャプチャ・ジョブが常に実行されていることが非常に重要です。そのためには、SQL Serverエージェントが常に実行され、SQL Serverの起動時に自動的に実行できるように設定されている必要があります。

    ノート:

    データベースに対してSQL Serverトランザクション・レプリケーションも有効になっている場合、CDCキャプチャ・ジョブは存在せず、かわりにSQL Serverログ・リーダー・エージェント・ジョブのみが存在します。

  • CDCキャプチャ・ジョブは、スループット向上のためにチューニングできます。チューニング情報は、CDCキャプチャ方法の操作上の考慮事項を参照してください。

  • Microsoftによって作成されるCDCクリーンアップ・ジョブは、Oracle GoldenGate ExtractがCDC表のデータを取得済であるかどうかに依存しません。したがって、TRANDATAを有効にした直後にCDCクリーン・アップ・ジョブを無効にするか削除し、Oracle GoldenGate独自の「変更データのパージ」タスクを有効にするために、追加のステップが必要です。詳細は、「CDCステージング・データのパージ」を参照してください。

コマンドライン・インタフェースを使用してサプリメンタル・ロギングを有効にするには、次の高度なステップを実行します:
  1. チェンジ・データ・キャプチャでデータベースを有効にするために必要な権限およびステップ(まだ設定されていない場合)を確認するには、「データベース・ユーザーおよび権限の準備」のトピックを参照してください。データベースがCDCに対して有効になっていない場合は、GoldenGateに昇格したアクセス権が必要になる場合がありますが、管理者が手動でデータベースのチェンジ・データ・キャプチャを有効にすることで無効にすることができます。

    • Google Cloud SQL for SQL Serverでは、サービス管理ユーザーがチェンジ・データ・キャプチャに対してデータベースを手動で有効にし、次のコマンドを実行する必要があります。

      EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database';

    • SQL ServerおよびAzure SQL管理対象インスタンスの場合、TRANDATAを追加すると、ユーザーがsysadmin権限を持っている場合、チェンジ・データ・キャプチャのデータベースの設定が試行されます。それ以外の場合、データベース管理者は、ソース・データベースに対して次のコマンドを実行して、TRANDATAを追加する前に、CDCのデータベースを手動で有効にできます:

      EXEC sys.sp_cdc_enable_db;

    • Amazon RDS for SQL Serverの場合、TRANDATAを追加すると、ユーザーにアクセス権が付与されている場合、チェンジ・データ・キャプチャ用のデータベースの設定も試行されます。それ以外の場合、マスター資格証明を持つデータベース管理者は、ソース・データベースに対して次のコマンドを実行して、TRANDATAを追加する前に、CDCのデータベースを手動で有効にできます:

      EXEC msdb.dbo.rds_cdc_enable_db 'source_database'

  2. ソースのOracle GoldenGateインストールで、GLOBALSファイルにパラメータGGSCHEMA schemanameがあり、ソース・データベースで使用されているスキーマ名(CREATE SCHEMA schemaname)が作成されていることを確認します。このスキーマは、データベースで作成される後続のすべてのOracle GoldenGateコンポーネントで使用されるため、Oracle GoldenGateのみで使用される一意のスキーマ(ggschemaなど)を作成し、SQL Serverスキーマのdboまたはcdcを使用しないことをお薦めします。

  3. ソースのOracle GoldenGateシステムで、コマンドライン・インタフェース(管理クライアント)を開きます。

  4. データベース・ログイン資格証明を使用してデータベースに接続します。

  5. Extractによって取得される各表に対して次のコマンドを発行します。ワイルドカードを使用して複数の表の名前を指定できます

    ADD TRANDATA owner.table

    ADD TRANDATA owner.*

    オプションで、SQL Serverチェンジ・データ・キャプチャのステージング表を配置するファイルグループを指定できます。その場合は、既存のファイルグループ名を指定したFILEGROUPオプションを使用します。

    ADD TRANDATA owner.table FILEGROUP cdctablesSee ADD TRANDATA

詳細は、ADD TRANDATAを参照してください。

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

サプリメンタル・ロギングを有効にすると、Extractでトランザクションを再構成するために必要なデータが、一連のSQL Server CDCシステム表に格納され、トランザクション内で操作の順序を追跡するために使用されるOracle GoldenGateオブジェクトも格納されます。これらの表は、データベース内のデータ格納量を減らすために定期的なパージが必要です。TRANDATAを使用したサプリメンタル・ロギングの有効化の一環として、SQL Serverによってそれ固有のチェンジ・データ・キャプチャ・クリーン・アップ・ジョブが作成されますが、このジョブでは、ExtractでこれらのCDCシステム表のデータが引き続き必要になる場合がありそのデータがExtractで取得される前に削除される可能性があることは考慮されていません。

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

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

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

Oracle GoldenGate for SQL Serverでは、CDCデータがExtractによる処理前に削除されるという状況に対処するために、「変更データのパージ」タスクが作成されている必要があります。このタスクでは、CDCステージング・データがパージされますが、Extractでまだ処理されていないデータはパージされません。

Oracle GoldenGateのチェンジ・データのパージタスクを作成するには、サプリメンタル・ロギング(TRANDATA)を有効にした直後、かつExtractを起動する前に、次の手順を実行します。チェンジ・データのパージタスクは、Administration Service内で実行され、初めて作成されたときにSQL Server CDCクリーン・アップ・ジョブを自動的に削除します。Administration Serviceによって実行されるため、「変更データのパージ」タスク用のSQL Serverエージェント・ジョブはありません。したがって、クリーン・アップ・タスクが正しく機能するためには、Administration Serviceが実行されている必要があります。

チェンジ・データのパージ・タスクを作成するには:

Oracle GoldenGate for Microservices Architectureでは、表にTRANDATAを追加した後、Extractを起動する前に、チェンジ・データのパージタスクを作成してデータベースでCDCクリーン・アップが実行されるようにする必要があります。これを行うには、次のいずれかを実行します。
  • 手動REST APIリクエスト
  • 管理サーバーWeb UI
Administration ServiceのWeb UIを使用してチェンジ・データのパージタスクを作成するには、次のようにします。
  1. 左側のペインの「タスク」セクションを展開します。
  2. 「タスク」ページでチェンジ・データのパージをクリックします。
  3. プラス記号をクリックしてフォームを表示し、必須フィールドに入力して新しいチェンジ・データのパージタスクを作成します。
    1. 操作名: 作成するパージ・タスクの名前。
    2. 有効: そのタスクを、有効になるように設定します(デフォルト値)。
    3. 資格証明ドメインと資格証明別名: ソース・データベースの既存の資格証明別名を選択します。
    4. ルールの保持: この値により、ソース・データベースに保持するCDCステージング・データの量(時間数か日数)が決まります。デフォルト値は、Oracle GoldenGateのバージョンに応じて3日か1時間になります。CDCデータの保存期間を短くすると、データベースに格納されるCDCステージング・データの量が減りますが、ユーザーがExtractをステージング表内のあるデータより前の時点に戻すことができる可能性が狭まります。
    5. パージ頻度: この値により、タスクの実行頻度を表します。デフォルト値は10分単位です。ユーザー・アクティビティが多い期間にパージ・タスクによるオーバーヘッドがデータベース・パフォーマンスに影響する場合を除き、デフォルト値のままにすることをお薦めします。

ノート:

ソース・データベースごとに「変更データのパージ」タスクを1つのみ作成します。

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

双方向ループ検出の有効化

Oracle GoldenGateの双方向実装には、1つのソース・データベースのExtractが、別のソース・データベースからReplicatによって送信されたトランザクションを再取得しないように、ループ検出が必須です。

CDC Extractキャプチャ方法の場合、デフォルトでは、Replicatの配信先の表に対してサプリメンタル・ロギングが有効なかぎり、Extractが構成されているデータベースにReplicatによってコミットされたトランザクションは、Replicatからのトランザクションを再取得します。

Replicatによって適用されるトランザクションの再取得を無視するには、CDC Extractに対してTRANLOGOPTIONS EXCLUDEFILTERTABLEパラメータを使用する必要があります。フィルタリング表として使用する表は、Replicatのために作成が必要なOracle GoldenGateチェックポイント表です。

フィルタ表を作成してサプリメンタル・ロギングを有効化する手順:

このステップには、SQL Serverのシステム管理者(sysadmin)ロールのメンバーであるデータベース・ユーザーが必要です。

  1. ソース・システムで、管理クライアントを実行します。

  2. 管理クライアントからデプロイメントに接続します。

  3. 次のコマンドを発行してデータベースにログインします。

    DBLOGIN USERIDALIAS alias

  4. ソース・データベースにデータを配信するためにReplicatによって使用されるOracle GoldenGateチェックポイント表を作成します。

    例: ADD CHECKPOINTTABLE ogg.ggchkpt

    GLOBALSファイルのGGSCHEMAパラメータで使用されるスキーマ名と同じものを使用することをお薦めします。

  5. 新しく作成されたチェックポイント表のサプリメンタル・ロギングを有効にします。

    例: ADD TRANDATA ogg.ggchkpt

  6. チェックポイント表の情報とともにReplicatを追加します。

    例: ADD REPLICAT repe, EXTTRAIL north/ea,checkpointtable ogg.ggchkpt

  7. フィルタリング表にReplicatのチェックポイント表を使用して、EXCLUDEFILTERTABLEパラメータでExtractを構成します。

    TRANLOGOPTIONS EXCLUDEFILTERTABLE ogg.ggchkpt