ogg中关于handlecollisions的示例分析

今天就跟大家聊聊有关ogg中关于handlecollisions的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

10余年的河津网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整河津建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“河津网站设计”,“河津网站推广”以来,每个客户项目都认真落实执行。

handlecollisions

实验环境参数

GGSCI (pc6 as ogg@hyyk) 11> edit params ext_s1

extract ext_s1

setenv (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")

setenv (ORACLE_SID="hyyk")

userid ogg,password oracle

gettruncates

exttrail /u01/app/oggs/dirdat/ss

table sender.*;

GGSCI (pc6 as ogg@hyyk) 13> edit params pump_s1

extract pump_s1

passthru

userid ogg,password oracle

rmthost 192.168.1.80,mgrport 7809

rmttrail /u01/app/oggd/dirdat/sd

table sender.*;

GGSCI (ogg-80) 5> edit params rep_s1

replicat rep_s1

setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

setenv(ORACLE_SID='ogg')

userid ogg,password oracle

--handlecollisions

ASSUMETARGETDEFS

--SOURCEDEFS /u01/app/oggd/dirdef/test.def

DISCARDFILE ./dirrpt/rorabb.dsc,PURGE

userid ogg,password oracle

map sender.tb21,target receiver.tb21;

1、源和目标建表(当然源和目标都要有主键)

源:

create table tb21(col1 int primary key, col2 int);

insert into tb21 values(1,1);

insert into tb21 values(2,1);

insert into tb21 values(3,1);

insert into tb21 values(4,1);

commit;

查看数据

SENDER@hyyk> select * from tb21;

COL1 COL2

---------- ----------

1    1

2    1

3    1

4    1

目标:

create table tb21(col1 int primary key, col2 int);

insert into tb21 values(1,1);

commit;

查看数据

RECEIVER@ogg> select * from tb21;

COL1 COL2

---------- ----------

1    1

添加附加日志,加入复制链路

GGSCI (pc6 as ogg@hyyk) 8> add trandata sender.tb21

Logging of supplemental redo data enabled for table SENDER.TB21.

TRANDATA for scheduling columns has been added on table 'SENDER.TB21'.

TRANDATA for instantiation CSN has been added on table 'SENDER.TB21'.

2、测试delete

无handlecollisions

源:

delete from tb21 where col1=2;

commit;

目标端查看进程状态

GGSCI (ogg-80) 24> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

REPLICAT    ABENDED     REP_S1      00:00:04      00:00:02

复制进程abend,2018-03-18 11:09:38  ERROR   OGG-01296  Error mapping from SENDER.TB21 to RECEIVER.TB21.

可以在目标上设置: 加handlecollisions(或者start rep2, skiptransaction)可以跳过,用stats rep2看一下;

GGSCI (ogg-80) 32> stats rep_s1

Sending STATS request to REPLICAT REP_S1 ...

Start of Statistics at 2018-03-18 11:13:44.

Replicating from SENDER.TB21 to RECEIVER.TB21:

*** Total statistics since 2018-03-18 11:13:34 ***

Total inserts                                    0.00

Total updates                             0.00

Total deletes                             1.00

Total discards                             0.00

Total operations                           1.00

Total delete collisions                   1.00

这里的delete变成了delete collisions

3、测试update

如果目标上不存在这个记录

(1)update键值时:

源:

update tb21 set col1=5 where col1=3;

commit;

SENDER@hyyk> select * from tb21;

COL1 COL2

---------- ----------

1    1

5    1

4    1

无handlecollisions时,会abend;

有handlecollisions时,会变成insert;但是此时需要加:源端:FETCHOPTIONS FETCHPKUPDATECOLS(将捕获完整日志镜像到trail中,转换为对target的一个完整记录的插入,相当于fetchcol(*))

目标端查看

RECEIVER@ogg> select * from tb21;

COL1 COL2

---------- ----------

5    1

1    1

我们使用logdump查看trail

2018/03/18 11:20:44.000.000 GGSUnifiedPKUpdate   Len    31 RBA 1830

Name: SENDER.TB21  (TDR Index: 1)

After  Image:                                             Partition 12   G  s

0000 0009 0000 0005 0000 0001 3300 0000 0500 0000 | ............3.......

0135 0001 0005 0000 0001 31                       | .5........1

Before Image          Len    13 (x0000000d)

BeforeColumnLen      9 (x00000009)

Column     0 (x0000), Len     5 (x0005)

After Image           Len    18 (x00000012)

Column     0 (x0000), Len     5 (x0005)

Column     1 (x0001), Len     5 (x0005)

(2)update非键值时:

源:

update tb21 set col2=4 where col1=4;

commit;

SENDER@hyyk> select * from tb21;

COL1 COL2

---------- ----------

1    1

6    5

5    1

4    4

加了handlecollisions

RECEIVER@ogg> select * from tb21;

COL1 COL2

---------- ----------

4    4

5    1

1    1

6    5

如果是ogg11g 加了handlecollisions也没有反应,数据也会不一致

需要在目标端加入INSERTMISSINGUPDATES参数,即可解决。

4、测试insert

源端insert的pk和目标冲突时,会以源端为准;

目标首先插入一条:

insert into tb21 values(6,1);

commit;

RECEIVER@ogg> select * from tb21;

COL1 COL2

---------- ----------

5    1

1    1

6    1

然后源端插入:

insert into tb21 values(6,5);

SENDER@hyyk> select * from tb21;

COL1 COL2

---------- ----------

1    1

6    5

5    1

4    1

加handlecollisions,

RECEIVER@ogg> select * from tb21;

COL1 COL2

---------- ----------

5    1

1    1

6    5

看最后目标的记录如何,实际会变成以源端为准。

看完上述内容,你们对ogg中关于handlecollisions的示例分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


当前题目:ogg中关于handlecollisions的示例分析
本文路径:http://scjbc.cn/article/ppdjcj.html

其他资讯