MAPEXCEPTIONの使用
MAPEXCEPTION
は、MAP
文でソース表とターゲット表の名前にワイルドカードが使用されている場合に有効です。MAPEXCEPTION
句は、通常のMAP
文(ソース表をターゲット表にマップする文と同じ)に配置します。Replicatは、エラーを生成するすべての操作を、ワイルドカード指定されたすべての表から同じ例外表にマップします。したがって、例外表には、ワイルドカード指定されたすべての表におけるすべての列のスーパーセットが含まれています。
ワイルドカード構成では列を個別にマップできないため、COLMAP
句をUSEDEFAULTS
オプションとともに使用してワイルドカード指定された表の列マッピングを処理し(またはCOLMATCH
パラメータを適宜使用し)、明示的な列マッピングを使用して追加情報(列変換関数またはSQLEXEC
で取得した情報など)をマップします。
MAPEXCEPTION
を使用する場合は、INSERTALLRECORDS
パラメータをMAPEXCEPTION
句に含めます。INSERTALLRECORDS
は、すべての操作タイプがINSERT
操作として例外表に適用されるようにします。これは、例外の正確なレコードを維持し、例外表で整合性エラーが発生しないようにするために必要です。
これらのパラメータの詳細は、Oracle GoldenGateパラメータおよび機能リファレンスを参照してください。
例11-22 MAPEXCEPTION
次に、例外マッピングでのMAPEXCEPTION
の使用例を示します。MAP
およびTARGET
句には、ワイルドカードのソースおよびターゲット表名が含まれています。名前がTRX
で始まるすべての表を処理するときに発生する例外が、指定されたマッピングを使用してfin.trxexceptions
表に取得されます。
MAP src.trx*, TARGET trg.*, MAPEXCEPTION (TARGET fin.trxexceptions, INSERTALLRECORDS, COLMAP (USEDEFAULTS, ACCT_NO = ACCT_NO, OPTYPE = @GETENV ('LASTERR', 'OPTYPE'), DBERR = @GETENV ('LASTERR', 'DBERRNUM'), DBERRMSG = @GETENV ('LASTERR', 'DBERRMSG') ) );