処理のための表の準備
次の表属性は、TimesTenのOracle GoldenGate環境で処理する必要があります。
ON DELETE CASCADE制約の削除
Oracle TimesTenのターゲット表に、ON DELETE CASCADE句を指定する外部キーが含まれており、その外部キーのターゲットである表がOracle GoldenGateレプリケーションのターゲットでもある場合は、エラーを回避するために、外部キー定義からON DELETE CASCADE句を削除する必要があります。
次の例を考えてみます。この例では、ソース表はemp_srcおよびsalary_src、ターゲット表はemp_targおよびsalary_targです。
-
emp_srcに削除が発行されます。 -
それによって、削除が
salary_srcにカスケードされます。 -
Oracle GoldenGateが、両方の削除をターゲットに送信します。
-
親削除が最初に到達し、
emp_targに適用されます。 -
親削除は、削除を
salary_targにカスケードします。 -
salary_srcのカスケード化された削除が、salary_targに適用されます。 -
この行は、すでにステップ5で削除されているため、配置できません。
Oracle TimesTenでは、外部キー制約またはカスケード削除制約の無効化はサポートされていません。ON DELETE CASCADEを削除するには、表を削除してON DELETE CASCADE句を使用せずに表を再作成するか、ALTER TABLEを使用して外部キー制約を削除し、ON DELETE CASCADE句を使用せずに制約を再作成する必要があります。
表における行の一意性の保証
Oracle GoldenGateでは、レプリケートされた更新および削除の正しいターゲット行を検索するために、ソース表とターゲット表でいくつかの一意の行識別子を必要とします。
TABLE文またはMAP文にKEYCOLS句が使用されている場合を除き、Oracle GoldenGateでは、次の優先順位に従って使用する行識別子が選択されています。主キー
-
タイムスタンプまたはマテリアライズされていない計算結果列を含まない英数字順に最初の一意キー。
-
前述のキー・タイプのいずれも存在しない場合(その他の種類のキーが表に定義されている可能性はありますが)、Oracle GoldenGateは、すべての列に対して疑似キーを作成しますデータベースは、キーでOracle GoldenGateでサポートされていないもの、またはOracle GoldenGate構成から除外されているものを除き、一意のキーでの使用を許可します。ノート:表にその他の使用できないキーがある場合や、表にキーがまったくない場合、Oracle GoldenGateにより、該当するメッセージがレポート・ファイルに記録します。すべての列からキーを構築すると、ソース・システム上のOracle GoldenGateのパフォーマンスが妨げられます。ターゲットでは、このキーがReplicatであまり効率的でないより大きい
WHERE句が使用される原因となります。
- 表に適切なキーがない場合、あるいは既存のキーを使用しない場合は、表に一意の値が常に含まれる列があれば、代替キーを定義できます。Extractの
TABLEパラメータおよびReplicatのMAPパラメータ内にKEYCOLS句を含めることで、この代替キーを定義します。指定されたキーが、Oracle GoldenGateにより検出される既存の主キーまたは一意キーよりも優先されます。Oracle GoldenGateパラメータおよび機能リファレンスのTABLE | MAPを参照してください。