Uso di MAPEXCEPTION

MAPEXCEPTION è valido quando i nomi delle tabelle di origine e di destinazione nell'istruzione MAP sono caratteri jolly. Posizionare la clausola MAPEXCEPTION nell'istruzione MAP normale, la stessa in cui mappare le tabelle di origine alle tabelle di destinazione. Replicat mappa tutte le operazioni che generano errori da tutte le tabelle con caratteri jolly alla stessa tabella delle eccezioni; pertanto, la tabella delle eccezioni deve contenere un superset di tutte le colonne in tutte le tabelle con caratteri jolly.

Poiché non è possibile mappare singolarmente le colonne in una configurazione con caratteri jolly, utilizzare la clausola COLMAP con l'opzione USEDEFAULTS per gestire il mapping delle colonne per le tabelle con caratteri jolly (o utilizzare il parametro COLMATCH se appropriato) e utilizzare mapping espliciti delle colonne per mappare eventuali informazioni aggiuntive, ad esempio quelle acquisite con le funzioni di conversione delle colonne o SQLEXEC.

Quando si utilizza MAPEXCEPTION, includere il parametro INSERTALLRECORDS nella clausola MAPEXCEPTION. INSERTALLRECORDS fa sì che tutti i tipi di operazione vengano applicati alla tabella delle eccezioni come operazioni INSERT. Ciò è necessario per mantenere un registro accurato delle eccezioni e per evitare errori di integrità nella tabella delle eccezioni.

Per ulteriori informazioni su questi parametri, vedere Riferimento su parametri e funzioni per Oracle GoldenGate.

Esempio 9-22 MAPESCEZIONE

Questo è un esempio di come utilizzare MAPEXCEPTION per il mapping delle eccezioni. Le clausole MAP e TARGET contengono nomi di tabella di origine e di destinazione con caratteri jolly. Le eccezioni che si verificano durante l'elaborazione di qualsiasi tabella con un nome che inizia con TRX vengono acquisite nella tabella fin.trxexceptions utilizzando il mapping designato.

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')
)
);