Utilizzo di EXCEPTIONSONLY

EXCEPTIONSONLY è valido per una coppia di tabelle di origine e di destinazione denominate e mappate uno a uno in modo esplicito in un'istruzione MAP, ovvero non possono esistere caratteri jolly. Per utilizzare EXCEPTIONSONLY, creare due istruzioni MAP per ogni tabella di origine per la quale si desidera utilizzare EXCEPTIONSONLY nella destinazione:

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

In questo caso, sono state create quattro colonne aggiuntive, oltre alle stesse che la tabella stessa contiene:

DML_DATE
OPTYPE
DBERRNUM
DBERRMSG

Per popolare la colonna DML_DATE, la funzione di conversione della colonna @DATENOW viene utilizzata per ottenere la data e l'ora dell'operazione non riuscita e il risultato viene mappato alla colonna. Per popolare le altre colonne extra, la funzione @GETENV viene utilizzata per restituire il tipo di operazione, il numero di errore del database e il messaggio di errore del database.

L'opzione EXCEPTIONSONLY dell'istruzione MAP delle eccezioni comporta l'esecuzione dell'istruzione solo dopo un'operazione non riuscita nella tabella di origine. Impedisce che ogni operazione venga registrata nella tabella delle eccezioni.

Il parametro INSERTALLRECORDS fa sì che tutte le operazioni non riuscite per la tabella di origine specificata, indipendentemente dal tipo di operazione, vengano registrate nella tabella delle eccezioni come inserzioni. Nota: nella tabella delle eccezioni non possono essere presenti limitazioni relative a chiave primaria o indice univoco. In questo scenario sono possibili violazioni di univocità che generano errori.

Esempio 9-21 EXCEPTIONSONLY

Questo esempio mostra come utilizzare REPERROR con EXCEPTIONSONLY e un'istruzione MAP delle eccezioni. Questo esempio mostra solo i parametri correlati a REPERROR; per Replicat sono necessari anche altri parametri non correlati alla gestione degli errori.

REPERROR (DEFAULT, EXCEPTION)
MAP ggs.equip_account, TARGET ggs.equip_account2,
COLMAP (USEDEFAULTS);
MAP ggs.equip_account, TARGET ggs.equip_account_exception,
EXCEPTIONSONLY,
INSERTALLRECORDS
COLMAP (USEDEFAULTS,
DML_DATE = @DATENOW (),
OPTYPE = @GETENV ('LASTERR', 'OPTYPE'),
DBERRNUM = @GETENV ('LASTERR', 'DBERRNUM'),
DBERRMSG = @GETENV ('LASTERR', 'DBERRMSG'));

In questo esempio, il parametro REPERROR è impostato per la gestione degli errori DEFAULT e l'opzione EXCEPTION fa sì che il processo Replicat consideri le operazioni non riuscite come eccezioni e continui l'elaborazione.