主コンテンツへ
Oracle® Fusion Middleware SQL ServerのためのOracle GoldenGateのインストールおよび構成
12c (12.2.0.1)
E70108-03
目次へ移動
目次

前
次

3 Oracle GoldenGateシステムの準備

この章では、Oracle GoldenGateのキャプチャおよび配信がサポートされるようにOracle GoldenGateが対話するデータベースを適切に構成する手順について説明します。ソース・システムのみに適用される手順、ターゲットのみに適用される手順、およびその両方に適用される手順があります。

この章は、次の項で構成されます。

3.1 データベース接続の構成

この項では、SQL ServerデータベースへのExtractおよびReplicatの接続を設定する手順について説明します。

Extractのデータベース接続の構成

Replicatのデータベース接続の構成

ODBC接続の構成

3.1.1 Extractのデータベース接続の構成

Extractでは、ODBC (Open Database Connectivity)接続でソースSQL Serverデータベースに接続します。この接続を確立するには、「データ ソース(ODBC)」コントロール・パネルからデータ・ソース名(DSN)を設定します。手順は、ODBC接続の構成を参照してください。

3.1.2 Replicatのデータベース接続の構成

Replicatがターゲット・データベースに接続してDML操作を実行できるようにする方法は、次のとおりです。

  • ODBCを介して接続します。

  • OLE DBを介して接続します。この方法がデフォルトで、ODBCを使用する方法よりもパフォーマンスが多少向上します。

  • SQL Serverレプリケーション・ユーザーとしてOLE DBを介して接続します。IDENTITY列、外部キー制約、およびトリガーに、NOT FOR REPLICATIONを設定する必要があります。

    注意:

    いかなる場合でも、メタデータに関する問合せに、Replicatでは常にODBCを使用するため、依然としてターゲットODBC接続を構成する必要があります。

使用する方法を選択する前に、次のガイドラインと手順を確認してそれぞれのメリットとデメリットを評価します。

3.1.2.1 ODBCまたはデフォルトのOLE DBの使用

ReplicatがODBC接続またはデフォルトのOLE DB接続を介して接続すると、次のような制限が適用されます。

  • ODBCまたはデフォルトのOLE DBを使用している場合に、ソースとターゲットに対してIDENTITY列をまったく同じに保つには、Replicatはトランザクションで特別な操作を作成し、必ずターゲットに対してシードがインクリメントされるようにします。これらの手順によって、配信パフォーマンスが低下する場合があります。

  • 冗長な操作の可能性を排除するために、ターゲット表に対するトリガーおよび制約を調整または無効にする必要があります。

ReplicatをODBCまたはデフォルトのOLE DBと組み合せて使用するには、次の手順に従います。

  1. ODBCのみを使用する場合、DBOPTIONSパラメータにUSEODBCオプションを指定してReplicatパラメータ・ファイルに含めます。(デフォルトのOLE DBを使用する場合、パラメータは不要です。)
  2. ターゲット表に対するトリガーおよび制約を無効にします。ターゲット表に対するトリガーおよび制約の無効化を参照してください。
  3. 双方向のSQL Server構成でIDENTITY列を使用するには、それぞれに異なるシード値を持ち、構成内のサーバーの数と等しい増分値を持つようにIDENTITY列を定義します。たとえば、2つのサーバーのインストールは次のようになります。
    • Sys1は、増分値2で、1にシード値を設定します。

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

    3つのサーバーのインストールは次のようになります。

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

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

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

  4. ODBCデータ・ソースを構成します。詳細は、ODBC接続の構成を参照してください。

注意:

OLE DBは、ODBC接続設定を使用して、使用するドライバの情報とともにOLE DBの接続情報を取得します。

3.1.2.2 USEREPLICATIONUSERを有効にしてOLE DBを使用する

ReplicatがUSEREPLICATIONUSERオプションを指定してOLE DB経由でSQL Serverレプリケーション・ユーザーとして接続し、IDENTITY、トリガー、および外部キー制約に対してNOT FOR REPLICATIONが有効になっている場合は、次のような利点と制限が適用されます。

  • Replicatが挿入を実行すると、IDENTITYシードがインクリメントされません。双方向のSQL Server構成では、前の項の手順3で示した例のように、シード値と増分値をずらして設定します。

  • 冗長な操作を回避するために、ターゲット上でReplicatユーザーに対してトリガーが自動的に無効になりますが、他のユーザーに対してはターゲット上でトリガーが起動します。

  • 外部キー制約は、Replicatトランザクションのターゲットに対して強制されません。CASCADE更新および削除は行われません。これらも冗長な操作を防ぎます。

  • CHECK制約は、Replicatトランザクションのターゲットに対して強制されません。これらの制約は、データの取得前にソースに対して強制されますが、ターゲットに制約がないことでデータの整合性の問題が発生するかを検討します。

    注意:

    通常のIDENTITY、トリガー、および制約の機能は、Replicatレプリケーション・ユーザー以外のユーザーに対しては有効のままです。

USEREPLICATIONUSERを設定してReplicatを使用するには、次の手順に従います。

  1. SQL Server Management Studio (またはその他のインタフェース)で、次のオブジェクトにNOT FOR REPLICATIONフラグを設定します。アクティブ/パッシブ構成の場合、パッシブ・データベースでのみ設定します。アクティブ/アクティブ構成の場合、両方のデータベースで設定します。
    • 外部キー制約

    • チェック制約

    • IDENTITY

    • トリガー(定義の変更が必要です。詳細は、Microsoft SQL Serverのドキュメントを参照してください。)

  2. 双方向構成用にIDENTITY値をパーティション化します。
  3. ReplicatのMAP文で、ソース表を適切なターゲットにマップし、ソース表がトリガーまたは外部キー・カスケード制約で参照する子表をマップします。トリガーおよびカスケードされる子の操作がOracle GoldenGateによってレプリケートされるため、参照される表を適切なターゲットにマップし、データの整合性を保ちます。ExtractのTABLEパラメータに同じ親と子のソース表を含めます。

    注意:

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

  4. Replicatパラメータ・ファイルに、USEREPLICATIONUSERオプションを指定してDBOPTIONSパラメータを含めます。
  5. ODBCデータ・ソースを構成します。詳細は、ODBC接続の構成を参照してください。

3.1.3 ODBC接続の構成

次の手順に従って、ソースSQL ServerデータベースおよびターゲットSQL Serverデータベース用のSQL Serverシステムのデータ・ソース名(DSN)を作成します。DSNには、ODBC (Open Database Connectivity)を介したSQL Serverデータベースへの接続方法に関する情報が格納されます。

注意:

OLEDBを適用の接続方法として使用している場合でも、Replicatでは、ターゲット・データベースへのメタデータに関する問合せに、常にODBCを使用します。したがって、Replicatには常にDSNが存在する必要があります。

SQL ServerのDSNの作成手順

  1. 「コントロール パネル」「管理ツール」「データ ソース(ODBC)」の順に選択して、ODBCクライアントを実行します。
  2. ODBCクライアントの「ODBCデータ ソース アドミニストレータ」ダイアログ・ボックスで「システムDSN」タブを選択し、「追加」をクリックします。
  3. 「データ ソースの新規作成」で、エディションに適したSQL Serverドライバを選択します。
  4. 「Finish」をクリックします。SQL Serverに接続するための新規データソースを作成するウィザードが表示されます。
  5. 次を入力します。
    • 名前: 任意の名前にできます。Windowsクラスタで、クラスタ内のすべてのノードにわたって同じ名前を使用します。

    • 説明: (オプション)このデータ・ソースの説明を入力します。

    • サーバー: SQL Serverインスタンス名を選択します。

  6. 「Next」をクリックします。
  7. Oracle GoldenGateでWindows認証を使用するには、ログイン認証として「統合Windows認証を使う」を選択し、Oracle GoldenGateでデータベース資格証明を使用するには、「ユーザーが入力するSQL Server用のログインIDとパスワードを使う」を選択します。SQL Server認証を選択する場合、ログイン情報を指定します。
  8. 「Next」をクリックします。
  9. デフォルト・データベースが、Oracle GoldenGateが接続するデータベースに設定されていない場合は、「既定のデータベースを以下のものに変更する」をクリックして、正しい名前を選択します。ANSIを使用するためのその他の設定を設定します。
  10. 「Next」をクリックします。
  11. 次のページはデフォルト設定のままにします。
  12. 「Finish」をクリックします。
  13. 「データ ソースのテスト」をクリックし、接続をテストします。
  14. 確認ボックスと「データ ソースの新規作成」ボックスを閉じます。
  15. SQL Serverのソースとターゲットのシステムごとに、この手順を繰り返します。

3.2 処理のための表の準備

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

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

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

ソースからこれらのアクションのレプリケートも実行する場合に、ターゲット表でトリガーまたはカスケード制約を無効にする必要がないのは、OLE DB接続をReplicatに使用する場合(これはデフォルトのため、パラメータを構成する必要はありません)およびDBOPTIONS USEREPLICATIONUSERパラメータをReplicatに使用する場合のみです。制約、トリガー、またはIDENTTITYプロパティでNOT FOR REPLICATIONを有効にする必要があります。

ターゲットでトリガーおよび制約を無効にする場合は、次のシナリオを適用できます。

  • ソースのすべての表がレプリケートされる単方向のレプリケーション。ターゲットのカスケード制約およびトリガーを無効にしてください。

ターゲット表でトリガーおよび制約を有効にする場合は、次のシナリオを適用できます。

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

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

3.2.2 行識別子の割当て

Oracle GoldenGateでは、レプリケートされた更新および削除に対して正しいターゲット行を見つけるために、ソース表とターゲット表にある形式の一意の行識別子が必要です。ソース表は、Oracle GoldenGateで使用する行識別子の種類を判別する方法に記載されている任意の種類のキーを持つことができます(ただし、SQL Server Standard Editionインスタンスの表には主キーが必要です)。表上の主キーが識別されず、固定長の列が存在する場合は、それらの固定長列のいずれかの長さが3800バイト未満である必要があります。

3.2.2.1 Oracle GoldenGateが使用する行識別子の種類を判別する方法

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

  1. 主キー(Standard Editionインスタンスの表に必要)。
  2. タイムスタンプまたはマテリアライズされていない計算結果列を含まない英数字順で最初の一意キー。
  3. 前述のキー・タイプのいずれも存在しない場合(その他の種類のキーが表に定義されている場合でも)、Oracle GoldenGateは、データベースで一意キーでの使用を許可されているすべての列(キー内での使用がOracle GoldenGateでサポートされていない列やOracle GoldenGate構成から除外されている列は除く)で疑似キーを作成します。SQL Serverの場合、Oracle GoldenGateは、主キーのないターゲット表の行データの長さを8000バイト未満に強制します。

    注意:

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

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

前述のキー・タイプの行識別子が表に存在しないか、または、それらの識別子を使用しない場合は、常に一意の値が含まれている列が表にあれば、代替キーを定義できます。この代替キーは、ExtractのTABLEパラメータおよびReplicatのMAPパラメータにKEYCOLS句を指定して定義します。指定されたキーは、Oracle GoldenGateが検出する既存の主キーまたは一意キーを上書きします。詳細は、『Oracle GoldenGate for Windows and UNIXリファレンス』を参照してください。

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

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

3.3 グローバリゼーション・サポート

Oracle GoldenGateのグローバリゼーション・サポートにより、ネイティブ言語のエンコーディングでのデータ処理が可能になります。Oracle GoldenGateの適用プロセス(Replicat)では、文字型の列にデータが含まれている場合に、あるキャラクタ・セットから別のキャラクタ・セットへのデータ変換がサポートされます。サポート情報と制限の詳細は、Oracle GoldenGate for Windows and UNIXの管理を参照してください。