GoldenGate Active-Active Replication with Conflict Detection and Resolution (CDR) part 2

标题: GoldenGate Active-Active Replication with Conflict Detection and Resolution (CDR) part 2

链接: http://www.traveldba.com/archives/554


ogg active-active 冲突解决方法USEMAX ,这次实验是验证insert操作采用usemax
ogg reolicat 进程配置文件
GGSCI (enmotech) 46> view params rpee
 
REPLICAT rpee
setenv ( NLS_LANG = AMERICAN_AMERICA.ZHS16GBK )
USERID goldengate,PASSWORD goldengate
SQLEXEC "ALTER SESSION SET CONSTRAINTS=DEFERRED"
REPORT AT 01:59
REPORTROLLOVER AT 02:00
--HANDLECOLLISIONS
DISCARDFILE ./dirrpt/rpee.dsc,PURGE
DISCARDROLLOVER AT 02:00
GETTRUNCATES
ASSUMETARGETDEFS
DYNAMICRESOLUTION
 
ALLOWNOOPUPDATES;
 
--This starts the macro
MACRO #exception_handler
BEGIN
, TARGET goldengate.exceptions
, COLMAP ( rep_name = "RPEE"
, table_name = @GETENV ("GGHEADER", "TABLENAME")
, errno = @GETENV ("LASTERR", "DBERRNUM")
, dberrmsg = @GETENV ("LASTERR", "DBERRMSG")
, optype = @GETENV ("LASTERR", "OPTYPE")
, errtype = @GETENV ("LASTERR", "ERRTYPE")
, logrba = @GETENV ("GGHEADER", "LOGRBA")
, logposition = @GETENV ("GGHEADER", "LOGPOSITION")
, committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP"))
, INSERTALLRECORDS
, EXCEPTIONSONLY;
END;
 
--REPERROR (DEFAULT, EXCEPTION)
--REPERROR (DEFAULT2, ABEND)
--REPERROR (-1, EXCEPTION)
map ogg1.tgt, target ogg2.tgt1;
--冲突表
map ogg1.test1, target ogg2.test1;
MAP ogg1.test1 #exception_handler();
--MAP ogg1.test2, TARGET ogg2.test2,
MAP ogg1.test2, TARGET ogg2.test2,
comparecols( on update all, on delete all),
RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, USEMAX (last_mod_time))),
RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, USEMAX (last_mod_time))),
RESOLVECONFLICT (DELETEROWEXISTS, (DEFAULT, OVERWRITE)),
RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, OVERWRITE)),
RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, DISCARD));
--RESOLVECONFLICT (UPDATEROWEXISTS,(DEFAULT, IGNORE ));
--异常处理
MAP ogg1.test2, TARGET ogg2.test2_exception,
EXCEPTIONSONLY,
INSERTALLRECORDS
SQLEXEC (id qry, query "select name, phone, address, salary, balance, comment1, last_mod_time from ogg2.test2 where name = :p1", PARAMS(p1 = name )), 
COLMAP ( rep_name = "RPEE" 
,table_name = @GETENV ("GGHEADER", "TABLENAME") 
,errno = @GETENV ("LASTERR", "DBERRNUM") 
,dberrmsg = @GETENV ("LASTERR", "DBERRMSG") 
,optype = @GETENV ("LASTERR", "OPTYPE") 
,errtype = @GETENV ("LASTERR", "ERRTYPE") 
,logrba = @GETENV ("GGHEADER", "LOGRBA")
,logposition = @GETENV ("GGHEADER", "LOGPOSITION") 
,committimestamp = @GETENV ("GGHEADER", "COMMITTIMESTAMP")
,res_date = @DATENOW() 
,name_before = before.name
,phone_before = before.phone 
,address_before = before.address 
,salary_before = before.salary
,balance_before = before.balance 
,comment1_before = before.comment1
, LAST_MOD_TIME = before.last_mod_time
, name_current = qry.name
, phone_current = qry.phone
, address_current = qry.address
, salary_current = qry.salary
, balance_current = qry.balance
, comment1_current = qry.comment1
, last_mod_time_current = qry.last_mod_time
);
map ogg1.test3, target ogg2.test3,COLMAP (USEDEFAULTS);
这里主要的参数是
RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, USEMAX (last_mod_time))),
查看两边数据
SQL> col name FOR a8
SQL> col ADDRESS FOR a15
SQL> col COMMENT1 FOR a20
 
SQL> SELECT * FROM ogg1.test2;
 
NAME     PHONE      ADDRESS             SALARY    BALANCE COMMENT1             LAST_MOD_TIME
-------- ---------- --------------- ---------- ---------- -------------------- ---------------------------------------------------------------------------
Mary     1234567890 Oracle Pkwy            100        400 ccc                  18-OCT-13 09.18.35.000000 PM
Mary1    1234567890 Oracle Pkwy            100        100 ccc                  04-FEB-13 12.00.00.000000 AM
Mary2    1111111    Ralston               1000       1600 bbb                  18-OCT-13 10.02.57.000000 PM
Mary3    1111111    Ralston               1000       1600 bbb                  18-OCT-13 10.04.49.000000 PM
 
SQL> SELECT * FROM ogg2.test2;
 
NAME     PHONE      ADDRESS             SALARY    BALANCE COMMENT1             LAST_MOD_TIME
-------- ---------- --------------- ---------- ---------- -------------------- ---------------------------------------------------------------------------
Mary2    1111111    Ralston               2000       2600 bbb                  18-OCT-13 10.03.04.000000 PM
Mary3    1111111    Ralston               2000       2600 bbb                  18-OCT-13 10.04.40.000000 PM
Mary     1111111    Ralston                300        800 bbb                  18-OCT-13 09.19.06.000000 PM
Mary1    1111111    Ralston                300        600 bbb                  03-FEB-13 12.00.00.000000 AM
 
两边在同一时间插入数据
 
ogg1.test2
<pre lang="sql">
22:15:07 SQL> INSERT INTO ogg1.test2 VALUES ('Mary7','1111111','Ralston',1000,1600,'bbb',sysdate);
 
1 ROW created.
 
22:15:50 SQL> commit;
 
Commit complete.
ogg2.test2
22:15:38 SQL> INSERT INTO ogg2.test2 VALUES ('Mary7','1111111','Ralston',2000,2600,'bbb',sysdate);
 
1 ROW created.
 
22:15:43 SQL> commit;
 
Commit complete.
查看结果
22:16:00 SQL> SELECT * FROM ogg2.test2;
 
NAME     PHONE      ADDRESS             SALARY    BALANCE COMMENT1             LAST_MOD_TIME
-------- ---------- --------------- ---------- ---------- -------------------- ---------------------------------------------------------------------------
Mary2    1111111    Ralston               2000       2600 bbb                  18-OCT-13 10.03.04.000000 PM
Mary3    1111111    Ralston               2000       2600 bbb                  18-OCT-13 10.04.40.000000 PM
Mary4    1111111    Ralston               2000       2600 bbb                  18-OCT-13 10.06.53.000000 PM
Mary5    1111111    Ralston               1000       1600 bbb                  18-OCT-13 10.10.24.000000 PM
Mary     1111111    Ralston                300        800 bbb                  18-OCT-13 09.19.06.000000 PM
Mary6    1111111    Ralston               2000       2600 bbb                  18-OCT-13 10.14.55.000000 PM
Mary7    1111111    Ralston               1000       1600 bbb                  18-OCT-13 10.15.50.000000 PM
Mary1    1111111    Ralston                300        600 bbb                  03-FEB-13 12.00.00.000000 AM
从上面可以看出在insert是采用了usemax(LAST_MOD_TIME)规则
看下ogg的冲突解决记录
GGSCI (enmotech) 57> stats rpee ,table ogg2.test2 ,reportcdr
 
Sending STATS request to REPLICAT RPEE ...
 
Start of Statistics at 2013-10-18 22:17:53.
 
Replicating from OGG1.TEST2 to OGG2.TEST2:
 
*** Total statistics since 2013-10-18 22:10:35 ***
        Total inserts                                      3.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   3.00
        Total CDR conflicts                                3.00
        CDR resolutions succeeded                          3.00
        CDR INSERTROWEXISTS conflicts                      3.00
 
*** Daily statistics since 2013-10-18 22:10:35 ***
        Total inserts                                      3.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   3.00
        Total CDR conflicts                                3.00
        CDR resolutions succeeded                          3.00
        CDR INSERTROWEXISTS conflicts                      3.00
 
*** Hourly statistics since 2013-10-18 22:10:35 ***
        Total inserts                                      3.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   3.00
        Total CDR conflicts                                3.00
        CDR resolutions succeeded                          3.00
        CDR INSERTROWEXISTS conflicts                      3.00
 
*** Latest statistics since 2013-10-18 22:10:35 ***
        Total inserts                                      3.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total discards                                     0.00
        Total operations                                   3.00
        Total CDR conflicts                                3.00
        CDR resolutions succeeded                          3.00
        CDR INSERTROWEXISTS conflicts                      3.00
 
End of Statistics.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值