SQL Server

この項では、Oracle GoldenGate for SQL Serverの構成の詳細を示します。

トピック:

データベース・ユーザーおよび権限の準備

Oracle GoldenGate for SQL Serverに必要なデータベース・ユーザー、権限およびアクセス権(サポートされるSQL Serverクラウド・データベースを含む)について学習します。

トピック:

Oracle GoldenGate for SQL Server

Oracle GoldenGateプロセスでは、データを取得してSQL Serverデータベースに適用するためにデータベース・ユーザーが必要であり、GoldenGateプロセスによって排他的に使用される専用データベース・ユーザーを作成することをお薦めします。

Oracle GoldenGate for SQL Serverでは、Oracle GoldenGateがWindowsサーバーにインストールされている場合にのみ、すべての動作保証済プラットフォームに対するSQL Server認証およびClassic Architectureに対するWindows認証がサポートされます。

  • Oracle GoldenGate Classic ArchitectureのWindows認証を使用するために、ExtractプロセスおよびReplicatプロセスはManagerプロセスのログイン資格証明を継承します。デフォルトでは、Managerプロセスは、Windowsサーバーにログオンしたユーザーとして対話形式で実行されるか、必要に応じて、デフォルト・サービス名がGGSMGRのWindowsサービスとして追加できます。Managerプロセスがどの方法で実行されている場合でも、Managerプロセスを実行しているユーザーには、ここにリストされているSQL Server権限が必要です。

  • SQL Server認証を使用するには、ExtractおよびReplicat専用のSQL Serverログインを作成し、次にリストされている権限を割り当てる必要があります。

SQL ServerおよびAzure SQL管理対象インスタンス

Oracle GoldenGateがSQL ServerまたはAzure SQL管理対象インスタンス・データベースに対して取得および適用を実行するには、次のユーザー要件および最小限のデータベース権限とアクセス権が必要です。
  1. Oracle GoldenGate for SQL ServerまたはAzure SQL Managed Instanceの専用ログインを作成します。

  2. ログインをユーザーとしてmsdbデータベースおよびソース・データベースまたはターゲット・データベースに追加します。

  3. Oracle GoldenGateに必要なオブジェクトに使用するスキーマをソース・データベースまたはターゲット・データベースに作成します。このスキーマは、GLOBALSパラメータ・ファイルで使用されるGGSCHEMA値にマップする必要があります。

  4. ユーザーがExtractかReplicatかに基づいて、Oracle GoldenGateユーザーの次の権限およびアクセス権を有効にします。

表4-3 Oracle GoldenGateユーザーの権限およびアクセス権

権限 Extract Replicat 構文

msdbデータベースのロールと権限

SQLAgentReaderRole

はい

いいえ

ALTER ROLE SQLAgentReaderRole ADD MEMBER gguser;

SQLAgentUserRole

継承

はい

ALTER ROLE SQLAgentUserRole ADD MEMBER gguser;

SELECT ON sysjobactivity

はい

いいえ

Classic Architectureにのみ必要です。

GRANT SELECT ON msdb.dbo.sysjobactivity TO gguser;

SELECT ON sysjobs

はい

いいえ

Classic Architectureにのみ必要です。

GRANT SELECT ON msdb.dbo.sysjobs TO gguser;

ユーザー・データベース・ロールおよび権限

SYSADMIN

はい

いいえ

データベース・レベルのチェンジ・データ・キャプチャ(CDC)をまだ有効にしていない場合は、一度かぎりの変更で有効にし、TRANDATAを有効にすると取り消すことができます。

ALTER SERVER ROLE sysadmin ADD MEMBER gguser;

sysadmin資格証明を持つデータベース管理者は、次を使用してCDCのデータベースを手動で有効にできます。これにより、Extractユーザーがこの権限を持つ必要がなくなります:

EXEC msdb.sys.sp_cdc_enable_db ‘source_database’

DBOWNER

はい

はい

ALTER ROLE db_owner ADD MEMBER gguser;

Amazon RDS for SQL Server

Oracle GoldenGateがAmazon RDS for SQL Serverデータベースに対して取得および適用を実行するには、次のユーザー要件および最小限のデータベース権限とアクセス権が必要です。

  1. Oracle GoldenGate for Amazon RDS for SQL Serverの専用ログインを作成します。

  2. ログインをユーザーとしてmsdbデータベースおよびソース・データベースまたはターゲット・データベースに追加します。

  3. Oracle GoldenGateに必要なオブジェクトに使用するスキーマをソース・データベースまたはターゲット・データベースに作成します。このスキーマは、GLOBALSパラメータ・ファイルで使用されるGGSCHEMA値にマップする必要があります。

  4. ユーザーがExtractかReplicatかに基づいて、Oracle GoldenGateユーザーの次の権限およびアクセス権を有効にします。

表4-4 Oracle GoldenGateユーザーの権限およびアクセス権

権限 Extract Replicat 構文

msdbデータベースのロールと権限

EXECUTE ON rds_cdc_enable_db

はい

いいえ

GRANT EXECUTE ON msdb.dbo.rds_cdc_enable_db TO gguser;

マスター資格証明を持つデータベース管理者は、次のコマンドを使用して、データベースのチェンジ・データ・キャプチャを手動で有効にできます。これにより、Extractユーザーがこのアクセス権を持つ必要がなくなります。

EXEC msdb.dbo.rds_cdc_enable_db ‘source_database’

SQLAgentOperatorRole

はい

いいえ

ALTER ROLE SQLAgentOperatorRole ADD MEMBER gguser;

SQLAgentUserRole

継承

はい

ALTER ROLE SQLAgentUserRole ADD MEMBER gguser;

SELECT ON sysjobactivity

はい

いいえ

Classic Architectureにのみ必要です。

GRANT SELECT ON msdb.dbo.sysjobactivity TO gguser;

SELECT ON sysjobs

はい

いいえ

Classic Architectureにのみ必要です。

GRANT SELECT ON msdb.dbo.sysjobs TO gguser;

ユーザー・データベース・ロールおよび権限

DBOWNER

はい

はい

ALTER ROLE db_owner ADD MEMBER gguser;

Azure SQL Database

Oracle GoldenGateがAzure SQL Databaseに対して適用を実行するには、次のユーザー要件および最小限のデータベース権限とアクセス権が必要です:

  1. Oracle GoldenGate for Azure SQL Databaseの専用ログインを作成します。

  2. ログインをユーザーとしてターゲット・データベースに追加します。

  3. Oracle GoldenGateに必要なオブジェクトに使用するスキーマをターゲット・データベースに作成します。このスキーマは、GLOBALSパラメータ・ファイルで使用されるGGSCHEMA値にマップする必要があります。

  4. Oracle GoldenGateユーザーの次の権限およびアクセス権を有効にします。

表4-5 Oracle GoldenGateユーザーの権限およびアクセス権

権限 Extract Replicat 構文

ユーザー・データベース・ロールおよび権限

DBOWNER

NA

はい

ALTER ROLE db_owner ADD MEMBER gguser;

Google Cloud SQL for SQL Server

Oracle GoldenGateがGoogle Cloud SQL for SQL Serverデータベースに対して取得および適用を実行するには、次のユーザー要件および最小限のデータベース権限とアクセス権が必要です。

  1. Oracle GoldenGate Google Cloud SQL for SQL Serverの専用ログインを作成します。ユーザーは、データベース・インスタンスのGoogle Cloudダッシュボードの「ユーザー」セクション内から作成する必要があります。

  2. ユーザーをソース・データベースまたはターゲット・データベースに追加します。

  3. Oracle GoldenGateに必要なオブジェクトに使用するスキーマをソース・データベースまたはターゲット・データベースに作成します。このスキーマは、GLOBALSパラメータ・ファイルで使用されるGGSCHEMA値にマップする必要があります。

  4. データベースをExtractのソースとして使用する場合は、データベースのチェンジ・データ・キャプチャ(CDC)を手動で有効にします:

    EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database';

  5. ユーザーがExtractかReplicatかに基づいて、Oracle GoldenGateユーザーの次の権限およびアクセス権を有効にします。

表4-6 Oracle GoldenGateユーザーの権限およびアクセス権

権限 Extract Replicat 構文

ユーザー・データベース・ロールおよび権限

DBOWNER

はい

はい

ALTER ROLE db_owner ADD MEMBER gguser;

データベース接続、システムおよびパラメータ設定の準備

Oracle GoldenGate for SQL Serverのデータベース接続、システムおよびパラメータ設定の構成について学習します。

トピック:

データベース接続の構成

SQL Serverのデータベース接続の構成について学習します。

トピック:

ExtractおよびReplicatのデータベース接続

ExtractおよびReplicatは、システムODBC DSN (データ・ソース名)を使用してSQL Serverデータベースに接続し、そのメタデータ問合せおよびトランザクション・データ処理にODBCを使用します。

Linuxでのデータベース接続の作成

Linux上で実行されているOracle GoldenGateプロセスのデータベース接続を作成する前に、最新バージョンのMicrosoft ODBC Driver for SQL Server (Linux).をインストールします

ダウンロードおよびインストールのステップは、次のリンクを選択してください。

https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15

インストールの場合は、「Red Hat Enterprise Linux and Oracle」にリストされているステップを選択します。

ODBCソフトウェアをインストールした後、次の例に従ってLinux用のODBC DSNを作成します。

  1. データ・ソースのテンプレート・ファイルを作成します。

    vi odbc_template_file.ini

  2. テンプレート・ファイルにデータ・ソースを記述します。必要に応じて、複数の一意のDSNエントリをテンプレート・ファイルにリストできます。

    次の例では、mydsn_2019_sourceがDSN名です。これは、データベースにExtractまたはReplicatを接続するために、DBLOGINおよびSOURCEDBまたはTARGETDBとともに使用されます。

    mydsn_2019_source]            
    Driver = ODBC Driver 18 for SQL Server            
    Server = myserver,1433            
    Database = source_database
    TrustServerCertificate=YES
  3. 次のコマンドを使用して、データ・ソースをインストールします。

    odbcinst -i -s -f odbc_template_file.ini

    このコマンドは、DSNをシステムのodbc.iniファイルに追加します。詳細は、次のリンクを選択してください。

    https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql-server-2017

Windowsでのデータベース接続の作成

Windows上で実行されているOracle GoldenGateプロセスのデータベース接続を作成する前に、最新バージョンのMicrosoft ODBC Driver for SQL Serverをインストールします。

次のステップに従って、Oracle GoldenGateがインストールされているWindowsサーバーにシステムDSNを作成します。

SQL ServerのDSNを作成するには、

  1. 「ODBC データ ソース (64 ビット)」アプリケーションを開きます。
  2. 「ODBC データ ソース アドミニストレーター」ダイアログ・ボックスで、「システム DSN」タブを選択し、「追加」をクリックします。
  3. 「データ ソースの新規作成」で、ODBC Driver {version} for SQL Serverを選択し、「完了」をクリックします。SQL Serverに接続するための新規データソースを作成するウィザードが表示されます。
  4. 次の詳細を入力し、「次へ」をクリックします。
    • 名前: 任意の名前にできます。Windowsクラスタで、クラスタ内のすべてのノードにわたって同じ名前を使用します。
    • 説明: (オプション)このデータ・ソースの説明を入力します。
    • サーバー: SQL Server接続文字列またはサーバー\インスタンス名を入力します。Always On接続の場合は、Always On可用性グループのリスナー\インスタンス名を使用します。
  5. ログイン認証では、次のオプションのいずれかを選択し、「次へ」をクリックします。
    1. 統合Windows認証
    2. ログインIDとユーザーが入力するパスワードを使用するSQL Server認証
  6. 「既定のデータベースを以下に変更する」を選択し、リストからソース・データベースまたはターゲット・データベースを選択します。「Use ANSI」設定を有効にします。「次」をクリックします。
  7. 次のページはデフォルト設定のままにします。「完了」をクリックします。
  8. 「データ ソースのテスト」をクリックし、接続をテストします。
  9. テストが成功したら、確認ボックスと「データ ソースの新規作成」ボックスを閉じます。
  10. SQL Serverのソース・データベースとターゲット・データベースごとに、この手順を繰り返します。
SQL ServerのAlways On構成のリスナーへの接続

ExtractおよびReplicatは、使用されているDSN接続に応じて、Always On構成のリスナーに接続するか、またはグループの現在のプライマリ・レプリカに直接接続できます。

リスナーへの接続を作成する利点は、ExtractまたはReplicatで、フェイルオーバー時に新しいプライマリ・レプリカにDSNを再構成しなくても、新しいプライマリに再接続できることです。

Extractは、読取り専用問合せを使用可能で読取り可能な同期モードのセカンダリ・レプリカにルーティングするように構成することもできます。デフォルトでは、Extractがリスナーに接続していると、すべての処理がプライマリ・レプリカに対して実行されますが、Extractの構成でTRANLOGOPTIONS ALWAYSONREADONLYROUTINGパラメータが指定されていると、読取り専用問合せはリスナーによって使用可能な読取り可能セカンダリ・レプリカにルーティングされます。

詳細は、「TRANLOGOPTIONS」および「Always On可用性グループ内のデータベースのキャプチャおよび配信要件の概要」を参照してください。

Always On構成のリスナーに接続するためのDSNを作成する場合は、DSNの作成時にマルチサブネット・フェイルオーバー・オプションを有効にします。Linux DSN接続の場合は、DSNエントリのMultiSubnetFailover=Yesオプションを使用します。

データベースの構成

SQL Serverのデータベースの構成について学習します。

トピック:

サポートされているSQL Serverのバージョン

SQL Serverの認定バージョンは、Oracle GoldenGateの各リリースで使用可能な公開済の動作保証マトリックスで確認できます。次のリンクから入手できます。

https://www.oracle.com/middleware/technologies/fusion-certification.html

Oracle GoldenGate Extractは、Enterprise EditionおよびSQL Server Standard Editionの一部のバージョンをサポートしています。動作保証マトリックスの「例外および追加情報」列を確認して、ExtractでサポートされているSQL ServerのStandard Editionバージョンの詳細を確認します。

Oracle GoldenGate配信は、SQL Server EnterpriseエディションとStandardエディションの両方をサポートしています。

Oracle GoldenGateでは、Azure SQL Database Managed Instanceのリモート取得と配信、およびAzure SQL Databaseのリモート配信がサポートされています。

Oracle GoldenGateは、Amazon RDS for SQL Serverのリモート・キャプチャとリモート配信をサポートしています。

処理のための表の準備

次の項に示す表属性はOracle GoldenGate環境で処理する必要があります。

トピック:

ターゲット表に対するトリガーおよびカスケード制約の無効化

SQL Serverがターゲットの環境では、ソースで発生した操作を繰り返す可能性のあるトリガーおよびカスケード制約を考慮します。たとえば、TableBにレコードを挿入するTableAの挿入トリガーがソースにあり、TableAおよびTableBの両方をキャプチャおよび配信するようにOracle GoldenGateが構成されている場合、ターゲット表TableAの挿入トリガーを無効にする必要があります。そうしないと、ReplicatはTableAに挿入し、トリガーが起動してTableBに挿入します。ReplicatはTableBにも挿入しようとするため、異常終了します。

トリガーまたはカスケード制約がソースで発生した操作を繰り返すと、次の条件が両方ともtrueである場合、トリガーまたは制約を使用禁止にする必要はありません。

  • DBOPTIONS USEREPLICATIONUSERパラメータをReplicatに使用します。

  • OLE DB接続をReplicatに使用します。OLE DB接続の使用はデフォルトの構成です。トリガー、制約、またはIDENTITYプロパティでNOT FOR REPLICATIONを有効にする必要があります。

次のシナリオでは、ターゲットでトリガーおよび制約を無効にします。

  • ソースのすべての表がレプリケートされる単方向のレプリケーション。

次のシナリオでは、ターゲットのトリガーおよび制約を有効にします。

  • トリガーまたはカスケード操作によって影響を受ける表がレプリケートされず、これらの表をロードするアプリケーションのみがトリガーまたはカスケード操作を使用している単方向のレプリケーション。

  • ソースのすべての表がレプリケートされる単方向または双方向のレプリケーション。このシナリオでは、ターゲット表のカスケード制約およびトリガーを設定してNOT FOR REPLICATIONを有効にし、ReplicatのDBOPTIONS USEREPLICATIONUSERパラメータを使用してください。

ターゲットのIDENTITY列、トリガーおよび制約に対するReplicatの考慮事項

IDENTITY列、トリガー、カスケード制約およびチェック制約があるターゲットSQL Serverデータベースにデータをレプリケートする場合は、次の点を考慮してください。

  • 列にIDENTITY列が含まれる場合、Replicatにより表のIDENTITY_INSERT ONが設定されます。これにより、配信パフォーマンスが低下する可能性があります。

  • トリガーまたはカスケード制約が含まれる表について、トリガーによって挿入されるデータやカスケード制約によって更新または削除されるデータと同じデータを配信するようにReplicatが構成されている場合は、トリガーまたはカスケード操作を実行するとReplicatエラーが発生する可能性があります。

    たとえば、ソースのTableAには、レコードをTableBに挿入するトリガーが含まれます。Extractは、TableATableBの両方のレコードを取得するように構成されています。ターゲットでは、Replicatにより、最初にTableAのレコードが挿入され、次に、TableAのトリガーが起動してTableBに挿入された後、Replicatによって同じレコードのTableBへの挿入が試行される結果、Replicatエラーが発生します。

  • すべての外部キーのチェック制約も強制されるため、配信パフォーマンスが低下する可能性があります。

このような状況に対処するために、レプリケーションのユースケースに基づいて実装できるいくつかのオプションがあります。

  • Replicatがターゲット表にデータを書き込む唯一のプロセスである一方向の実装では、ターゲット表のIDENTITY列、トリガーおよび制約について次のオプションを検討します。

    1. ターゲット表のIDENTITYプロパティ、トリガーおよび制約を無効化または削除します。

    2. IDENTITYプロパティ、トリガーおよび制約を変更し、それぞれに対してNOT FOR REPLICATIONオプションをオンに設定して、Microsoft ODBCドライバが少なくともバージョン17.8.1であることを確認します。

  • Replicatとアプリケーションの両方でターゲット表にデータが書き込まれ、トリガーと制約が有効になっている複数方向の実装では、IDENTITYプロパティ、トリガーおよび制約を変更し、それぞれに対してNOT FOR REPLICATIONオプションをオンに設定して、Microsoft ODBCドライバが少なくともバージョン17.8.1であることを確認します。

    また、複数方向レプリケーション構成でIDENTITY列を使用するには、それぞれに異なるシード値を持ち、構成内のサーバーの数と等しい増分値を持つようにIDENTITY列を定義します。

    たとえば、3つのデータベース構成は次のようになります。

    Database1は、増分値3で、0にシード値を設定します。

    Database2は、増分値3で、1にシード値を設定します。

    Database3は、増分値3で、2にシード値を設定します。

ターゲットのIDENTITY列、トリガーおよび制約に対するNOT FOR REPLICATIONフラグの設定
  1. 次のオブジェクトにNOT FOR REPLICATIONフラグを設定します。

    • 外部キー制約
    • CHECK制約
    • IDENTITY
    • トリガー(定義に対するテキスト変更が必要です。詳細は、SQL Serverのドキュメントを参照してください。)

    アクティブ/パッシブ構成の場合、パッシブ・データベースでのみ設定します。アクティブ/アクティブ構成の場合、両方のデータベースで設定します。

  2. 双方向構成用にIDENTITY値をパーティション化します。

  3. ReplicatのMAP文で、ソース表を適切なターゲットにマップし、ソース表がトリガーまたは外部キー・カスケード制約で参照する子表をマップします。トリガーおよびカスケードされる子の操作がOracle GoldenGateによってレプリケートされるため、参照される表を適切なターゲットにマップし、データの整合性を保ちます。必ず、ExtractのTABLEパラメータに同じ親と子のソース表を含めてください。

    ノート:

    参照先の表がMAP文に含まれていない場合、整合性違反(レプリケートされていない表への外部キーが含まれている表に行が挿入される場合など)をアラートするエラーは表示されません。

ソース表とターゲット表での行の一意性の確保

Oracle GoldenGateでは、レプリケートされた更新および削除に対して正しいターゲット行を見つけるために、ソース表とターゲット表にある形式の一意の行識別子が必要です。

TABLEまたはMAP文でKEYCOLS句が使用されないかぎり、Oracle GoldenGateは、使用する行識別子を次の優先順位に従って選択します。

  1. 主キー

  2. タイムスタンプまたはマテリアライズされていない計算結果列を含まない英数字順で最初の一意キー。

  3. 前述のキー・タイプのいずれも存在しない場合(その他の種類のキーが表に定義されている場合でも)、Oracle GoldenGateは、データベースで一意キーでの使用を許可されているすべての列(キー内での使用がOracle GoldenGateでサポートされていない列やOracle GoldenGate構成から除外されている列は除く)で疑似キーを作成します。

    ノート:

    表に使用可能な他のキーがない場合や、表にキーがまったくない場合、Oracle GoldenGateは該当するメッセージをレポート・ファイルに記録します。すべての列からキーを作成すると、ソース・システムのOracle GoldenGateのパフォーマンスが低下します。ターゲットでは、このキーはReplicatであまり効率的でないより大きいWHERE句が使用される原因となります。

  4. 表に適切なキーがない場合、あるいは既存のキーを使用しない場合は、表に一意の値が常に含まれる列があれば、代替キーを定義できます。ExtractのTABLEパラメータおよびReplicatのMAPパラメータ内にKEYCOLS句を含めることで、この代替キーを定義します。指定したキーにより、Oracle GoldenGateで検出される既存の主キーまたは一意キーはオーバーライドされます。Oracle GoldenGateリファレンスTABLE | MAPを参照してください。

KEYCOLSを使用したカスタム・キーの指定

該当するキーが表にない場合、あるいは識別子を使用しない場合、表に常に一意の値を含んだ列があれば、代替キーを定義できます。ExtractのTABLEパラメータおよびReplicatのMAPパラメータ内にKEYCOLS句を含めることで、この代替キーを定義します。指定されたキーは、Oracle GoldenGateが検出する既存の主キーまたは一意キーを上書きします。

配列処理を使用したIDENTITYレプリケーションの改善

セッションごとに1つの表しかIDENTITY_INSERTONに設定できないため、セッション内の複数の表にIDENTITYデータを適用するときは、ReplicatがIDENTITY_INSERTの切替えを続ける必要があります。このような状況で、Replicatのパフォーマンスを改善するには、BATCHSQLパラメータを使用します。BATCHSQLを使用すると、Replicatは、一度に1つずつSQL文を適用するかわりに配列処理を使用します。

トランザクション・ログの設定と要件

Oracle GoldenGate for SQL Serverのトランザクション・ログの設定および要件の詳細を参照してください。

トピック:

Oracle GoldenGateキャプチャのソース・データベースの準備

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

トピック:

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クリーン・アップ・ジョブまたは変更データのパージ・タスクを有効にする必要があります。詳細は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を参照してください。

GoldenGate CDCキャプチャを設定するサンプル・チュートリアルが用意されています:

Oracle GoldenGate for SQL Server CDCキャプチャ・レプリケーションOracle GoldenGate 19.1 for SQL Server CDCの使用

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. 「タスク」ページでチェンジ・データのパージをクリックします。
  4. プラス記号をクリックしてフォームを表示し、必須フィールドに入力して新しいチェンジ・データのパージタスクを作成します。
    1. 操作名: 作成するパージ・タスクの名前。
    2. 有効: そのタスクを、有効になるように設定します(デフォルト値)。
    3. 資格証明ドメインと資格証明別名: ソース・データベースの既存の資格証明別名を選択します。
    4. ルールの保持: この値により、ソース・データベースに保持するCDCステージング・データの量(時間数か日数)が決まります。デフォルト値は、Oracle GoldenGateのバージョンに応じて3日か1時間になります。CDCデータの保存期間を短くすると、データベースに格納されるCDCステージング・データの量が減りますが、ユーザーがExtractをステージング表内のあるデータより前の時点に戻すことができる可能性が狭まります。
    5. パージ頻度: この値により、タスクの実行頻度を表します。デフォルト値は10分単位です。ユーザー・アクティビティが多い期間にパージ・タスクによるオーバーヘッドがデータベース・パフォーマンスに影響する場合を除き、デフォルト値のままにすることをお薦めします。

ノート:

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

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

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

SQL Server CDCキャプチャのオプション、機能および推奨設定について学習します。

トピック:

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

次の情報は、Extractのキャプチャ・パフォーマンスの向上に役立ちます。
  • 「統計の自動作成」および「統計の自動更新」がデータベースに対して有効になっていることを確認します。cdc.OracleGG_#####_CT tablescdc.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オブジェクトのバージョニング

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

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

  • OracleCDCExtractOracleGGCreateProcsおよび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, 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キャプチャ方法に使用されるパラメータについて説明します。

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パラメータを使用すると、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分単位です。ユーザー・アクティビティが多い期間にパージ・タスクによるオーバーヘッドがデータベース・パフォーマンスに影響する場合を除き、デフォルト値のままにすることをお薦めします。

既存のチェンジ・データのパージタスクを変更するには、Administration Serviceの左側にあるメニューから「構成」に移動して、「構成」ページを開きます。
  1. 「構成」ページの「タスク」をクリックして、「タスク」ページを開きます。
  2. 「タスク」ページでチェンジ・データのパージをクリックします。
  3. 既存のタスクの横にある「タスクの変更」アイコンをクリックします。
  4. 必要に応じて、「ルールの保持」オプションや「パージ頻度」オプションの値を変更します。
  5. 「送信」をクリックして変更を保存します。

Oracle GoldenGateのチェンジ・データのパージタスクの削除

データベースのチェンジ・データのパージタスクの削除は、その特定のデータベースに対するキャプチャが構成されているExtractがない場合にのみ実行されるようにする必要があります。

既存のチェンジ・データのパージタスクを削除するには、Administration Serviceの左側にあるメニューから「構成」オプションに移動して、「構成」ページを開きます。
  1. 「構成」ページの「タスク」をクリックして、「タスク」ページを開きます。
  2. 「タスク」ページでチェンジ・データのパージをクリックします。
  3. 削除するタスクの横にある「タスクの削除」アイコンをクリックします。
クラシックExtractからCDC Extractへの変更

Oracle GoldenGate 12c (12.3.0.1)以前のクラシックExtractからOracle GoldenGate 21c 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キャプチャのソース・データベースの準備に示されたステップに従って、サプリメンタル・ロギングおよびその他の必要なコンポーネントを再度有効にし、ハートビート表を再度追加します。

Always On可用性グループ内のデータベースのキャプチャおよび配信要件の概要

SQL ServerのためのOracle GoldenGateは、Always On可用性グループのプライマリ・レプリカまたは読取り専用同期モードのセカンダリ・レプリカからのキャプチャ、およびプライマリ・レプリカへの配信をサポートしています。

Always On可用性グループ内のプライマリまたはセカンダリ・レプリカからキャプチャする場合は、そのキャプチャ・プロセスではログからハードニング済トランザクションのみが読み取られる必要があること、およびOracle GoldenGateによるキャプチャ元となるレプリカ・データベースの間でデータが失われる可能性はないことを理解しておいてください。

トピック:

データベース接続

ExtractとReplicatの両方に対して、接続にはAlways On可用性グループ・リスナーを使用するシステムDSNを作成するようにしてください。
  • Replicatの場合、このリスナーに接続することで、プライマリ・レプリカが新しいインスタンスへのフェイルオーバーを実行しても、新しいプライマリを指すようにDSN設定を手動で編集することなくReplicatは再接続できるようになります。

  • Extractの場合は、このリスナーに接続することで、新しいインスタンスを指すようにDSNを編集することなくプライマリに再接続できるだけでなく、読取り専用セカンダリに対してExtractのデータ抽出ストアド・プロシージャを必要に応じて実行できるようにもなります。

  • Always On環境に接続されているExtractとReplicatの両方で、ManagerにAUTORESTARTパラメータを使用し、フェイルオーバー後にプロセスを再起動します。

  • Extractのデータ抽出問合せを読取り専用セカンダリにルーティングするために、DSN接続がリスナーを使用していること、読取り専用ルーティングを処理するように構成された読取り専用セカンダリ・レプリカが1つ以上あること、Extractの実行にTRANLOGOPTIONS ALWAYSONREADONLYROUTINGパラメータを指定していることを確認します。

サプリメンタル・ロギング

サプリメンタル・ロギングは、プライマリ・レプリカに接続された管理クライアントを使用する通常の方法(ADD TRANDATA)で有効にする必要があります。セカンダリ・レプリカに対しては有効化しないでください。

  • DBLOGINを使用して接続し、ADD TRANDATAを実行するには、プライマリ・レプリカへのDSNか、Always On可用性グループ・リスナーへのDSNを作成します。

  • サプリメンタル・ロギングを有効にするために使用するログインには、プライマリ・レプリカ・インスタンスのsysadminメンバーシップが必要です。

  • プライマリ・レプリカ・データベースに対してサプリメンタル・ロギングを有効にしていると、セカンダリ・レプリカではSQL Serverチェンジ・データ・キャプチャ・ジョブが自動作成されなくなります。プライマリからセカンダリへのフェイルオーバー時には、新しいプライマリ・レプリカでSQL Serverチェンジ・データ・キャプチャ・ジョブとOracle CDCクリーン・アップ・ジョブ(使用中の場合)を手動で作成する必要があります。

    EXECUTE sys.sp_cdc_add_job N'capture

    • 新しいプライマリでSQL Server CDCキャプチャ・ジョブを作成するときには、デフォルトの構成設定が適用されます。そのため、前のプライマリ・レプリカでデフォルト値を変更していた場合は、相応の値を設定するために、新しいプライマリでsys.sp_cdc_change_jobを実行する必要があります。

ノート:

詳細は、AlwaysOnセカンダリ・レプリカのCDCキャプチャ・ジョブを有効化する方法に関するMicrosoftドキュメントを参照してください。

動作要件と考慮事項

  • プライマリ・インスタンスではなくなったインスタンスにSQL Server CDCキャプチャ・ジョブがインストールされている場合、そのジョブはしばらく実行してから停止し、再起動は試行されません。そのインスタンスへのフェイルオーバー時には、ジョブが自動的に開始されないため、手動でジョブを起動する必要があります。

  • セカンダリ・レプリカ・データベースがプライマリ・レプリカ・データベースと同期していない場合、CDCキャプチャ・ジョブはログに進まないため、プライマリおよびセカンダリ・レプリカが同期されるまで、レコードはExtractによってキャプチャされません。詳細は、次のMicrosoftの記事を参照してください。

    https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/replicate-track-change-data-capture-always-on-availability?view=sql-server-2017

    ノート:

    Always On可用性グループ内のプライマリまたはセカンダリ・レプリカからキャプチャする場合は、そのキャプチャ・プロセスではログからハードニング済トランザクションのみが読み取られる必要があること、およびOracle GoldenGateによる取得元となるレプリカ・データベースの間でデータが失われる可能性はないことを理解しておいてください。
  • 中間層のWindowsサーバーまたはLinuxサーバーからExtractを実行するときには、中間層サーバーの日付、時刻およびタイムゾーンをプライマリ・レプリカと同じになるように設定します。

  • プライマリからセカンダリ・レプリカへのフェイルオーバー時に、createJobオプションを指定したogg_cdc_cleanup_setup.batファイルを再実行して、新しいプライマリにOracle GoldenGate CDCクリーン・アップ・ジョブを再インストールします。

  • Extractが読取り可能なセカンダリ・データベースからキャプチャするように構成されているときに、読取り専用ルーティングによって構成されていない場合は、Extractの開始前にセカンダリ・レプリカに対するSQL Server CDCキャプチャ・ジョブを作成しておく必要があります。これは、Extractがジョブの有無をチェックするためです。SQL Server CDCキャプチャ・ジョブを作成するには、Extractの接続先になる可能性のある潜在的なセカンダリを適切な時点で書込み可能なプライマリ・データベースとして設定し、前述のサプリメンタル・ロギングでのステップを実行してSQL Server CDCキャプチャ・ジョブを手動で追加します。
  • Oracle GoldenGateをアンインストールし、Always On可用性グループの一部であるデータベースでチェンジ・データ・キャプチャを無効にする場合は、チェンジ・データ・キャプチャの無効化で説明されている追加のステップに従います。