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のサプリメンタル・ロギングを有効にするには、次の手順を行います。

コマンドライン・インタフェースを使用してサプリメンタル・ロギングを有効にするには、次の高度なステップを実行します:

  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.*

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

    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システム表から削除されている場合、次のいずれかの修正処理が必要になる可能性があります。

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クリーン・アップが実行されるようにする必要があります。これを行うには、次のいずれかを実行します。

管理サービスのWeb UIを使用してチェンジ・データのパージ・タスクを作成するには、次のようにします: 1。左側のペインの「タスク」セクションを開きます。

  1. 「タスク」ページで「チェンジ・データのパージ」をクリックします。

  2. プラス記号をクリックしてフォームを表示し、必須フィールドに入力して新しいチェンジ・データのパージタスクを作成します。

    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