MAPEXCEPTION verwenden
MAPEXCEPTION ist gültig, wenn die Namen der Quell- und Zieltabellen in der MAP-Anweisung mit Platzhaltern versehen sind. Platzieren Sie die MAPEXCEPTION-Klausel in der regulären MAP-Anweisung, der gleichen, in der Sie die Quelltabellen den Zieltabellen zuordnen. Replicat ordnet alle Vorgänge, die Fehler aus allen mit Platzhaltern versehenen Tabellen generieren, derselben Ausnahmetabelle zu. Daher sollte die Ausnahmetabelle eine Obermenge aller Spalten in allen mit Platzhaltern versehenen Tabellen enthalten.
Da Sie Spalten in einer Platzhalterkonfiguration nicht einzeln zuordnen können, verwenden Sie die Klausel COLMAP mit der Option USEDEFAULTS, um die Spaltenzuordnung für die Platzhaltertabellen zu verarbeiten (oder verwenden Sie gegebenenfalls den Parameter COLMATCH), und ordnen Sie mit expliziten Spaltenzuordnungen zusätzliche Informationen zu, wie die mit Spaltenkonvertierungsfunktionen oder SQLEXEC erfassten Informationen.
Wenn Sie MAPEXCEPTION verwenden, nehmen Sie den Parameter INSERTALLRECORDS in die MAPEXCEPTION-Klausel auf. INSERTALLRECORDS bewirkt, dass alle Vorgangstypen als INSERT-Vorgänge auf die Ausnahmetabelle angewendet werden. Dies ist erforderlich, um eine genaue Aufzeichnung der Ausnahmen zu führen und Integritätsfehler in der Ausnahmetabelle zu vermeiden.
Weitere Informationen zu diesen Parametern finden Sie in der Referenz zu Parametern und Funktionen für Oracle GoldenGate.
Beispiel 9-22: MAPEXCEPTION
Dies ist ein Beispiel dafür, wie Sie MAPEXCEPTION für die Ausnahmenzuordnung verwenden. Die Klauseln MAP und TARGET enthalten Quell- und Zieltabellennamen mit Platzhaltern. Ausnahmen, die bei der Verarbeitung einer Tabelle mit einem Namen auftreten, der mit TRX beginnt, werden mit der angegebenen Zuordnung in der Tabelle fin.trxexceptions erfasst.
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')
)
);