溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ogg中關于handlecollisions的示例分析

發布時間:2021-11-30 09:24:52 來源:億速云 閱讀:279 作者:柒染 欄目:關系型數據庫

今天就跟大家聊聊有關ogg中關于handlecollisions的示例分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

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的示例分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女