表における行の一意性の保証

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を参照してください。