SharePlex qview工具 vs OGG logdump工具探究兩個複製工具事務開始 or 事務提交複製?

你好我是李白發表於2020-09-07

Goal

探究SharePlex與Oracle Goldengate事務開始複製還是事務提交之後複製。

1.SharePlex驗證

1.1 搭建一個簡單SharePlex鏈路

本地oracle到kafka鏈路,配置如下:

sp_ctrl (single:12000)> view config kafka
datasource:o.messay
#source tables      target tables           routing map
expand hr.% not (TEST_TYPE)     !kafka         single
sp_ctrl (single:12000)> show
Process    Source                               Target                 State                   PID
---------- ------------------------------------ ---------------------- -------------------- ------
Capture    o.messay                                                    Running                8336
Read       o.messay                                                    Running                8338
Post       o.messay-single                      x.kafka                Running                8836
sp_ctrl (single:12000)> qstatus
Queues Statistics for single
  Name:  o.messay (Capture queue)
    Number of messages:          0 (Age         0 min; Size          2 mb)
    Backlog (messages):          0 (Age         0 min)
  Name:  single (o.messay-x.kafka) (Post queue)
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)

1.2 測試

1.2.1 源端插入資料,並不提交

06:20:55 HR@messay > insert into test values(19,'s(*)*dfsfdsdfsdfs');
1 row created.

1.2.2 檢視佇列資料

sp_ctrl (single:12000)> qstatus
Queues Statistics for single
  Name:  o.messay (Capture queue)
    Number of messages:          0 (Age         0 min; Size          2 mb)
    Backlog (messages):          0 (Age         0 min)
  Name:  single (o.messay-x.kafka) (Post queue)
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)

  1.2.3 qview檢視佇列資料

[oracle@single rim]$ qview -i
qview> qinit    # 初始化qview工具
qview> list      # 列出當前所有佇列
The following queues exist:
  o.messay+C
        WRITER  +PA+o.messay+sp_ocap+o.messay  
        READER  +PR+o.messay+sp_ordr+o.messay  
  single+P+o.messay-x.kafka
    subqueues range from 0 to 7
        WRITER  +PR+o.messay+sp_ordr+o.messay  
        READER  +PP+single+sp_xpst+o.messay-x.kafka  
qview> sque o.messay+C       # 檢視capture佇列所有的sub queue子佇列
Queue name:  o.messay+C
qview> sque single+P+o.messay-x.kafka   # 檢視子佇列訊息數量
Queue name:  single+P+o.messay-x.kafka
qview>

# 可以看到佇列中沒有任何資料,那是否SharePlex沒有複製呢?我們繼續驗證

1.2.4 繼續插入資料,依然不提交

06:23:54 HR@messay > insert into test values(20,'6646dfsfdsdfsdfs');
1 row created.

1.2.5 檢視佇列,可以看到post佇列中已經有一條message

sp_ctrl (single:12000)> qstatus
Queues Statistics for single
  Name:  o.messay (Capture queue)
    Number of messages:          0 (Age         0 min; Size          2 mb)
    Backlog (messages):          0 (Age         0 min)
  Name:  single (o.messay-x.kafka) (Post queue)
    Number of messages:          1 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)

1.2.6 qview驗證訊息

sp_ctrl (single:12000)> stop post
[oracle@single rim]$ ../../prodir/bin/qview -i
qview> qinit 
qview> list
The following queues exist:
  o.messay+C
        WRITER  +PA+o.messay+sp_ocap+o.messay  
        READER  +PR+o.messay+sp_ordr+o.messay  
  single+P+o.messay-x.kafka
    subqueues range from 0 to 7
        WRITER  +PR+o.messay+sp_ordr+o.messay  
        READER  +PP+single+sp_xpst+o.messay-x.kafka
qview> set out
qview> set detail full
qview> sque single+P+o.messay-x.kafka
Queue name:  single+P+o.messay-x.kafka
    Subqueue 6:   1 msgs     2:10 mins
qview> open p r
Current queue single+P+o.messay-x.kafka         user +PP+single+sp_xpst+o.messay-x.kafka
qview> oread 6 1
Total messages read:        1
qview> exit  
       
[oracle@single rim]$ cat qview.out 
OREAD 6 1 : Sun Aug 23 06:29:07 2020
   for single+P+o.messay-x.kafka
---------------------------------------------------
Sque 6, seq 0, mid 17, sqmid 1, mflags 0
odr_magic        0x4f445236
odr_op           ODR_INSERT1 (1)
odr_trans        7(5).3169-6(1145)
odr_time         08/23/20 06:23:55 (1049178235)
odr_sid          messay
odr_seq#/offset  26/33896976
odr_scn (high)   0
odr_scn          16534229
odr_userid       84
odr_flags        0x2040000
odr_cdr_flags    0
odr_marker       0
odr_actid        8
odr_obj          89612
odr_oname        "HR"."TEST"
odr_userid       84
odr_nrow         1
odr_datasize     0
odr_forward      1
odr_forback      0
odr_opnum        0
odr_rid [0]      AAAV9qAAEAAAAnDAAB at 0x0x7fffb4744f48
data image
columns = 0
data = 0x7fffb4744f5c
key image
columns = 2
data = 0x7fffb4744f5c
[1] length=2 19
[2] length=17 s(*)*dfsfdsdfsdfs

# 根據rowid查詢該條資料,發現post佇列中資料為我們剛插入的第一條資料,並沒有第二條資料

06:26:38 HR@messay > select * from test where rowid='AAAV9qAAEAAAAnDAAB';
                                      ID NAME
---------------------------------------- ----------------------------------------
                                      19 s(*)*dfsfdsdfsdfs

# SharePlex應該是將最後一條資料作為判斷是否提交的依據,如果最後一天訊息不是commit訊息,則不放入佇列,只讀取並且將倒數第二條訊息寫入佇列。

# 接下來我們繼續驗證

1.2.7 繼續插入繼續檢視

06:35:02 HR@messay > insert into test values(21,'6646');
1 row created.
sp_ctrl (single:12000)> show
Process    Source                               Target                 State                   PID
---------- ------------------------------------ ---------------------- -------------------- ------
Capture    o.messay                                                    Running                8336
Read       o.messay                                                    Running                8338
Post       o.messay-single                      x.kafka                Running                9572
sp_ctrl (single:12000)> qstatus
Queues Statistics for single
  Name:  o.messay (Capture queue)
    Number of messages:          0 (Age         0 min; Size          2 mb)
    Backlog (messages):          0 (Age         0 min)
  Name:  single (o.messay-x.kafka) (Post queue)
    Number of messages:          2 (Age         8 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)
    
sp_ctrl (single:12000)> stop post  
[oracle@single rim]$ qview -i
qview> qinit
qview> set out
qview> set detail full
qview> list
The following queues exist:
  o.messay+C
        WRITER  +PA+o.messay+sp_ocap+o.messay  
        READER  +PR+o.messay+sp_ordr+o.messay  
  single+P+o.messay-x.kafka
    subqueues range from 0 to 7
        WRITER  +PR+o.messay+sp_ordr+o.messay  
        READER  +PP+single+sp_xpst+o.messay-x.kafka  
qview> open p r
Current queue single+P+o.messay-x.kafka         user +PP+single+sp_xpst+o.messay-x.kafka
qview> sque single+P+o.messay-x.kafka
Queue name:  single+P+o.messay-x.kafka
    Subqueue 6:   2 msgs     11:14 mins
qview> oread 6 2
Total messages read:        2
qview> exit                 
[oracle@single rim]$ cat qview.out 
OREAD 6 2 : Sun Aug 23 06:38:01 2020
   for single+P+o.messay-x.kafka
---------------------------------------------------
Sque 6, seq 0, mid 17, sqmid 1, mflags 0
odr_magic        0x4f445236
odr_op           ODR_INSERT1 (1)
odr_trans        7(5).3169-6(1145)
odr_time         08/23/20 06:23:55 (1049178235)
odr_sid          messay
odr_seq#/offset  26/33896976
odr_scn (high)   0
odr_scn          16534229
odr_userid       84
odr_flags        0x2040000
odr_cdr_flags    0
odr_marker       0
odr_actid        8
odr_obj          89612
odr_oname        "HR"."TEST"
odr_userid       84
odr_nrow         1
odr_datasize     0
odr_forward      1
odr_forback      0
odr_opnum        0
odr_rid [0]      AAAV9qAAEAAAAnDAAB at 0x0x7fffe5d2d268
data image
columns = 0
data = 0x7fffe5d2d27c
key image
columns = 2
data = 0x7fffe5d2d27c
[1] length=2 19
[2] length=17 s(*)*dfsfdsdfsdfs
Sque 6, seq 393, mid 18, sqmid 2, mflags 0
odr_magic        0x4f445236
odr_op           ODR_INSERT1 (1)
odr_trans        7(5).3169-6(1145)
odr_time         08/23/20 06:26:39 (1049178399)
odr_sid          messay
odr_seq#/offset  26/34054160
odr_scn (high)   0
odr_scn          16534678
odr_userid       84
odr_flags        0x2040000
odr_cdr_flags    0
odr_marker       0
odr_actid        8
odr_obj          89612
odr_oname        "HR"."TEST"
odr_userid       84
odr_nrow         1
odr_datasize     0
odr_forward      1
odr_forback      0
odr_opnum        0
odr_rid [0]      AAAV9qAAEAAAAnDAAC at 0x0x7fffe5d2d268
data image
columns = 0
data = 0x7fffe5d2d27c
key image
columns = 2
data = 0x7fffe5d2d27c
[1] length=2 20
[2] length=16 6646dfsfdsdfsdfs 
06:35:07 HR@messay > select * from test where rowid='AAAV9qAAEAAAAnDAAC';
                                      ID NAME
---------------------------------------- ----------------------------------------
                                      20 6646dfsfdsdfsdfs

1.3 結論

SharePlex從事務開始即開始複製,從事務開始即複製並不是所有訊息都儲存在佇列,最後一條未提交訊息是不在佇列中的。

從事務開始複製,會加快佇列複製速度,但是對於大事務回滾來說,確實有一些不太友好。

2.Oracle Goldengate驗證

2.1 搭建一個本地到本地的簡單ogg環境

$ ./ggsci

GGSCI (single) 3> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                           
EXTRACT     RUNNING     DP_TAR      00:00:00      00:00:08    
EXTRACT     RUNNING     EX_TAR      00:00:05      00:00:05    
REPLICAT    RUNNING     RP_NEW      00:00:00      00:00:02   
 
GGSCI (single) 4> view param ex_tar
extract ex_tar
setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
setenv (ORACLE_SID="messay")
setenv (ORACLE_HOME="/oracle/app/oracle/product/11.2/db_1")
userid ogg,password ogg
exttrail ./dirdat/rt
GETUPDATEBEFORES
GETTRUNCATES
--BR BROFF
BR BRINTERVAL 2H
CACHEMGR CACHESIZE 100MB
WARNLONGTRANS 2H,CHECKINTERVAL 5M
TRANLOGOPTIONS INTEGRATEDPARAMS (max_sga_size 200, parallelism 2)
--TRANLOGOPTIONS ARCHIVEDLOGONLY
NUMFILES 4000
NOCOMPRESSUPDATES
EOFDELAYCSECS 10
--TRANLOGOPTIONS DBLOGREADER
TRANLOGOPTIONS PURGEORPHANEDTRANSACTIONS
DYNAMICRESOLUTION
discardfile ./dirrpt/ex_oth.dsc,append, megabytes 200
table hr.test;

2.2 源端測試表插入資料,第一條commit,第二條不commit

16:59:16 HR@messay > insert into test values(21,'aaa');
17:06:50 HR@messay > commit;
17:06:53 HR@messay > insert into test values(22,'aaa');

2.3 使用logdump工具檢視源端佇列檔案內容

$ ./logdump
Logdump 16 >ghdr on
Logdump 17 >detail on
Logdump 18 >filter filename HR.TEST
Logdump 20 >open /ogg/dirdat/rt000014
Current LogTrail is /ogg/dirdat/rt000014 
Logdump 21 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 16:51:45.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 16823312 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 16:51:45.000.000 Insert               Len    21 RBA 1091 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3139 0001 0007 0000 0003 6161 | ........19........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Filtering suppressed      2 records 
Logdump 22 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 16:59:16.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 17503760 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 16:59:16.000.000 Insert               Len    21 RBA 1222 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3230 0001 0007 0000 0003 6161 | ........20........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Logdump 23 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 17:06:53.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 20932112 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 17:06:53.000.000 Insert               Len    21 RBA 1355 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3231 0001 0007 0000 0003 6161 | ........21........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Logdump 24 >next

# 可以看到只有21,沒有22的訊息,也就是OGG沒有捕獲未提交的事務。

# 將22記錄提交

19:07:24 HR@messay > commit;

# logdump繼續檢視

Logdump 25 >position first
Reading forward from RBA 0 
Logdump 26 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 16:51:45.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 16823312 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 16:51:45.000.000 Insert               Len    21 RBA 1091 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3139 0001 0007 0000 0003 6161 | ........19........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Filtering suppressed      2 records 
Logdump 27 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 16:59:16.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 17503760 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 16:59:16.000.000 Insert               Len    21 RBA 1222 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3230 0001 0007 0000 0003 6161 | ........20........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Logdump 28 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 17:06:53.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 20932112 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 17:06:53.000.000 Insert               Len    21 RBA 1355 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3231 0001 0007 0000 0003 6161 | ........21........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Logdump 29 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 19:10:18.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 31403152 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 19:10:18.000.000 Insert               Len    21 RBA 1488 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3232 0001 0007 0000 0003 6161 | ........22........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Logdump 30 >next
Logdump 31 >
# 可以看到提交之後,trail佇列檔案中有了22的記錄。

2.4 繼續插入以及update不commit

2.4.1 繼續插入

19:10:18 HR@messay > insert into test values(23,'aaa');
1 row created.
Elapsed: 00:00:00.27
22:49:29 HR@messay > insert into test values(24,'aaa');
1 row created.
Elapsed: 00:00:00.00
22:49:33 HR@messay > insert into test values(25,'aaa');
1 row created.
Elapsed: 00:00:00.00
22:49:37 HR@messay > update test set name='hahahahaha' where id=25;
1 row updated.

2.4.2 logdump檢視

Logdump 34 >position first
Reading forward from RBA 0 
Logdump 35 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 16:51:45.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 16823312 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 16:51:45.000.000 Insert               Len    21 RBA 1091 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3139 0001 0007 0000 0003 6161 | ........19........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Filtering suppressed      2 records 
Logdump 36 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 16:59:16.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 17503760 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 16:59:16.000.000 Insert               Len    21 RBA 1222 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3230 0001 0007 0000 0003 6161 | ........20........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Logdump 37 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 17:06:53.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 20932112 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 17:06:53.000.000 Insert               Len    21 RBA 1355 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3231 0001 0007 0000 0003 6161 | ........21........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Logdump 38 >next
___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x04)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :    21  (x0015)   IO Time    : 2020/08/24 19:10:18.000.000   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :         33       AuditPos   : 31403152 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2020/08/24 19:10:18.000.000 Insert               Len    21 RBA 1488 
Name: HR.TEST 
After  Image:                                             Partition 4   G  s   
 0000 0006 0000 0002 3232 0001 0007 0000 0003 6161 | ........22........aa  
 61                                                | a  
Column     0 (x0000), Len     6 (x0006)  
Column     1 (x0001), Len     7 (x0007)  
   
Logdump 39 >next
Logdump 40 >

#可以看到並沒有更多的訊息,也就是不存在SharePlex的不記錄最後一條未提交事務訊息的情況。

2.5 結論

Oracle Goldengate只有在事務提交之後才會複製記錄到trail檔案中,對於大事務最終回滾的場景很友好,但是對於

大事務提交的場景,Oracle Goldengate確實做的不如SharePlex。

3 總結

(1)SharePlex在事務開始即開始複製

(2)OGG在事務提交之後開始複製

(3)對於大事務回滾的場景,SharePlex表現不如OGG,因為OGG如果事務最終回滾,OGG將不復制。

(4)對於大事務提交的場景,OGG表現是不如SharePlex的,因為OGG從COMMIT之後才開始寫入trail檔案,必然造成延遲。

(5)綜上,兩個軟體原理設計各有優缺點,Oracle Goldengate最近版本釋出更為穩定,對Oracle各個版本支援更為及時

並且與Oracle更為深度融合,複製效率越來越高,希望SharePlex未來也能越做越好,希望國產DSG也能越來越棒。


                        


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31439444/viewspace-2717675/,如需轉載,請註明出處,否則將追究法律責任。

相關文章