===== Exception Handling Setup ===== An Exception table will hold the details of all Conflicts that have occured within GoldenGate.\\ This is neccessary because Conflict Detection and Resolution (CDR) will be in place. \\ ==== Create Exception Table ==== As the GGATE user create the EXCEPTIONS table ...\\ CREATE TABLE GGATE.EXCEPTIONS ( EXCP_DATE TIMESTAMP(6), REP_NAME VARCHAR2(10), TABLE_NAME VARCHAR2(56), ERRNO NUMBER, ERRMSG VARCHAR2(4000), OPTYPE VARCHAR2(24), COMMITTIMESTAMP VARCHAR2(26), RECCSN NUMBER, RECSEQNO NUMBER, LOGRBA NUMBER, LOGPOSITION NUMBER, GROUPTYPE VARCHAR2(12), FILENAME VARCHAR2(50), SRCROWID VARCHAR2(40), REPLAG NUMBER, CNT_CDR_CONFLICTS NUMBER, CNT_CDR_RESOLUTIONS NUMBER, CNT_CDR_FAILED NUMBER); ==== Macro ==== Now create a macro that will convert GoldenGate environment variables into values for inserting.\\ Save this macro as a file called exceptions.inc in $GGHOME/dirsql/macros/exceptions.inc ...\\ MACRO #exceptioncols BEGIN excp_date = @DATENOW(), rep_name = @GETENV ('GGENVIRONMENT', 'GROUPNAME'), table_name = @GETENV ('GGHEADER', 'TABLENAME'), errno = @GETENV ('LASTERR', 'DBERRNUM'), errmsg = @GETENV ('LASTERR', 'DBERRMSG'), optype = @GETENV ('LASTERR', 'OPTYPE'), committimestamp = @GETENV ('GGHEADER', 'COMMITTIMESTAMP'), reccsn = @GETENV ('TRANSACTION', 'CSN'), recseqno = @GETENV ('RECORD', 'FILESEQNO'), logrba = @GETENV ('GGHEADER', 'LOGRBA'), logposition = @GETENV ('GGHEADER', 'LOGPOSITION'), grouptype = @GETENV ('GGENVIRONMENT', 'GROUPTYPE'), filename = @GETENV ('GGFILEHEADER', 'FILENAME'), srcrowid = @GETENV ('RECORD', 'ROWID'), replag = @GETENV ('LAG', 'SEC'), cnt_cdr_conflicts = @GETENV ('DELTASTATS','TABLE', @GETENV ('GGHEADER', 'TABLENAME'),'CDR_CONFLICTS'), cnt_cdr_resolutions = @GETENV ('DELTASTATS','TABLE', @GETENV ('GGHEADER', 'TABLENAME'),'CDR_RESOLUTIONS_SUCCEEDED'), cnt_cdr_failed = @GETENV ('DELTASTATS','TABLE', @GETENV ('GGHEADER', 'TABLENAME'),'CDR_RESOLUTIONS_FAILED') END; ==== Replicat Parameter File ==== Within all 4 replicat parameter files add an "INCLUDE" line to describe the location of the macro file.\\ Also after every table involved in CDR, place the "MAP" statement below after it.\\ INCLUDE ./dirprm/macros/exceptions.inc .... MAP MAILONLINE.USER_TRANSFER_ITEM, TARGET GGATE.EXCEPTIONS, EXCEPTIONSONLY, INSERTALLRECORDS, COLMAP (#exceptioncols());