処理のための表の準備

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

ターゲットのIDアイデンティティ列、トリガーおよび制約に対するReplicatの考慮事項

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

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

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

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

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

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

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

  1. 主キー

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

  3. 前述のキー・タイプのいずれも存在しない場合(その他の種類のキーが表に定義されている場合でも)、Oracle GoldenGateは、すべての列で疑似キーを作成しますキーでOracle GoldenGateでサポートされていないもの、またはOracle GoldenGate構成から除外されているものを除き、一意のキーでデータベースを使用できること。ノート:表に使用できるその他のキーがない場合や、表にキーがまったくない場合、Oracle GoldenGateは該当するメッセージをレポート・ファイルに記録します。すべての列からキーを構築すると、ソース・システム上のOracle GoldenGateのパフォーマンスが妨げられます。ターゲットでは、このキーによってReplicatは、より大きく、非効率なWHERE句を使用します。

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

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

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