説明
OVERRIDEDUPSおよびNOOVERRIDEDUPSパラメータでは、両方のレコードが同一のキーを持つときに、Replicatがターゲット・データベースの既存のレコードをレプリケートされたレコードで上書きするかどうかを制御します。
OVERRIDEDUPSでは、既存のレコードを上書きします。ロード前にターゲット表の切捨てを行わない初期ロードや、信頼できるソースとターゲット表の再同期のときに使用できます。SQLDUPERRパラメータをOVERRIDEUPSとともに使用して、データベースによって返される重複INSERT操作の数値エラー・コードを指定します。詳細は、「SQLDUPERR」を参照してください。
NOOVERRIDEDUPS (デフォルト)は、既存のレコードを上書きするかわりに、重複レコード・エラーを生成します。例外MAP文とSQLEXEC句を使用して、エラーに対するレスポンスを開始できます。そうしない場合、トランザクションは異常終了することがあります。例外マップの詳細は、Oracle GoldenGateの管理for Windows and UNIXを参照してください。
例外マップが使用できない場合にReplicatを異常終了させずに重複レコードをバイパスするには、次のようなREPERRORパラメータ文を指定します(errorは、主キー制約エラーに対するデータベース・エラー番号です)。
REPERROR (error, IGNORE)
たとえば、Oracleデータベースの場合、この文は次のようになります。
REPERROR (1, IGNORE)
Replicatは、無視された重複レコードを破棄ファイルに書き込みます。
OVERRIDEDUPSまたはNOOVERRIDEDUPSは、適用するTABLEまたはMAP文よりも前に指定します。TABLEまたはMAP文の様々なグループごとに異なるルールを作成できます。パラメータの動作は切り替わります。つまり、1つのパラメータが後続のTABLEまたはMAP文に対して有効であるのは、別のパラメータが出現するまでです。
OVERRIDEDUPSは、HANDLECOLLISIONSが使用されると自動的に有効になります。詳細は、「HANDLECOLLISIONS | NOHANDLECOLLISIONS」を参照してください。
|
注意:
|