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

TABLE文またはMAP文で、KEYCOLS句を使用しない場合には、ロギングされる制約数およびタイプに応じて、Oracle GoldenGateにより、使用される行識別子が次の優先順位で選択されます(「トランザクション・ログの設定と要件」を参照)。

ノート:

JSONリレーション二面性ビュー(JSON DV)およびJSONコレクション表(JCT)には1つの事前定義済キー(_id)があるため、KEYCOLS句はサポートされません。
  1. 拡張(32K) VARCHAR2/NVARCHAR2列が含まれない場合は、主キー。非表示列を含まない主キー。

  2. 一意キー: 非表示列を含まない一意キー。

    非統合Replicatの場合、一意キーの選択は次のとおりです。

    • 仮想列、UDT、ファンクション・ベース列、NULL値可能列、および拡張(32K) VARCHAR2/NVARCHAR2列がない英数字順で最初の一意キー。表示されない索引の一部である列を含むキーをサポートするには、Oracle GoldenGate GLOBALSファイルでALLOWINVISIBLEINDEXKEYSパラメータを使用する必要があります。

    • 仮想列、UDT、拡張(32K) VARCHAR2/NVARCHAR2列、ファンクション・ベース列はないが、Null値可能列がある英数字順で最初の一意キー。表示されない索引の一部である列を含むキーをサポートするには、Oracle GoldenGate GLOBALSファイルでALLOWINVISIBLEINDEXKEYSパラメータを使用する必要があります。

  3. NULL値不可の一意キー: 一意キーの1つ以上の列をNULL値不可にする必要があります。これは、NOALLOWNULLABLEKEYSがデフォルトであるためです。

    ノート:

    ALLOWNULLABLEKEYSは、統合Replicatには無効です。
  4. 前のどのキー型も存在しない場合(表に定義されているその他のキー型が存在する可能性があっても)、Oracle GoldenGateによって、一意なキーでデータベースを使用できるすべての列の擬似キー(仮想列、UDT、ファンクション・ベース列、拡張(32K) VARCHAR2/NVARCHAR2列、およびOracle GoldenGateユーザーによって、Oracle GoldenGate構成から明示的に除外されている列を除く)が作成されます。

    前述の制限事項によって除外されないかぎり、非表示列は擬似キーで使用できます。

ノート:

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

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

Oracle Replicatで次の基準が一致する場合は、ソース表のキー列と一致する一意の索引を使用する必要があります。
  • KEYCOLSパラメータが指定されていません。

  • USEALLKEYCOLUMNSパラメータが指定されていません。

  • ALLOWNULLABLEKEYSパラメータが指定されていません。

  • ソース・キー列とターゲット・キー列が一致しません。

  • ソース表のキー列の一意索引に一致が存在します。