ソース表とターゲット表での行の一意性の確保
TABLE
文またはMAP
文で、KEYCOLS
句を使用しない場合には、ロギングされる制約数およびタイプに応じて、Oracle GoldenGateにより、使用される行識別子が次の優先順位で選択されます(「トランザクション・ログの設定と要件」を参照)。
ノート:
JSONリレーション二面性ビュー(JSON DV)およびJSONコレクション表(JCT)には1つの事前定義済キー(_id
)があるため、KEYCOLS
句はサポートされません。
-
拡張(32K)
VARCHAR2/NVARCHAR2
列が含まれない場合は、主キー。非表示列を含まない主キー。 -
一意キー: 非表示列を含まない一意キー。
非統合Replicatの場合、一意キーの選択は次のとおりです。
-
仮想列、UDT、ファンクション・ベース列、NULL値可能列、および拡張(32K)
VARCHAR2/NVARCHAR2
列がない英数字順で最初の一意キー。表示されない索引の一部である列を含むキーをサポートするには、Oracle GoldenGateGLOBALS
ファイルでALLOWINVISIBLEINDEXKEYS
パラメータを使用する必要があります。 -
仮想列、UDT、拡張(32K)
VARCHAR2/NVARCHAR2
列、ファンクション・ベース列はないが、Null値可能列がある英数字順で最初の一意キー。表示されない索引の一部である列を含むキーをサポートするには、Oracle GoldenGateGLOBALS
ファイルでALLOWINVISIBLEINDEXKEYS
パラメータを使用する必要があります。
-
-
NULL値不可の一意キー: 一意キーの1つ以上の列をNULL値不可にする必要があります。これは、
NOALLOWNULLABLEKEYS
がデフォルトであるためです。ノート:
ALLOWNULLABLEKEYS
は、統合Replicatには無効です。 -
前のどのキー型も存在しない場合(表に定義されているその他のキー型が存在する可能性があっても)、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パラメータおよび機能リファレンスを参照してください。
-
KEYCOLS
パラメータが指定されていません。 -
USEALLKEYCOLUMNS
パラメータが指定されていません。 -
ALLOWNULLABLEKEYS
パラメータが指定されていません。 -
ソース・キー列とターゲット・キー列が一致しません。
-
ソース表のキー列の一意索引に一致が存在します。