Linux下GoldenGate單機雙向同步

zhenghaishu發表於2015-08-05

Linux下GoldenGate單機雙向同步

上節實現了Linux系統中資料從scott.test_tablehaishu.test_table的單向同步。本節在上節的基礎上實現資料從haishu.test_tablescott.test_table的同步。這樣就實現了資料在scott.test_tablehaishu.test_table之間的雙向同步。

 

一、配置抽取程式

GGSCI (localhost) 1> add extract ext2,tranlog, begin now

EXTRACT added.

 

 

GGSCI (localhost) 2> add exttrail /u01/ogg/dirdat/hs, extract ext2

EXTTRAIL added.

這裡add exttrail /u01/ogg/dirdat/hs, extract ext2表示透過ext2程式把資料庫中的資料抽取到本地的/u01/ogg/dirdat/hs檔案中。

hs是haishu的簡稱,代表資料要從haishu.test_table中同步到scott.test_table中。當然也可以用別的字元,不過建議使用有意義的字元。

exttrail表示本地。若要把資料抽取到遠端機器上,應使用“add rmttrail……”句式。

 

編輯抽取程式的引數:

GGSCI (localhost) 3> edit params ext2

 

在新開啟的/u01/ogg/dirprm/ext2.prm中輸入以下內容並儲存退出

extract ext2

userid ogg,password oracle

rmthost 127.0.0.1,mgrport 7809

rmttrail /u01/ogg/dirdat/hs

dynamicresolution

table haishu.test_table;

 

 

二、配置複製程式

GGSCI (localhost) 4> add replicat rep2,exttrail /u01/ogg/dirdat/hs, checkpointtable ogg.checkpoint

REPLICAT added.

這個句子表示從本機的/u01/ogg/dirdat/hs中讀取資料,並透過rep2程式把這些資料複製到資料庫中。ogg.checkpointrep2的容器表。

 

編輯複製程式引數

GGSCI (localhost) 5> edit params rep2

 

在新開啟的/u01/ogg/dirprm/rep2.prm中輸入如下內容並儲存退出

replicat rep2

userid ogg,password oracle

assumetargetdefs

discardfile /u01/ogg/dirdat/rep2_discard.txt,append

map haishu.test_table, target scott.test_table

RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, OVERWRITE))

RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, OVERWRITE))

RESOLVECONFLICT (DELETEROWEXISTS, (DEFAULT, OVERWRITE))

RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, IGNORE))

RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, IGNORE));

 

 

三、測試

1 在ogg環境中開ogg的啟管理程式,抽取程式和同步程式

GGSCI (localhost) 10> start mgr

 

Manager started.

 

 

GGSCI (localhost) 11> start ext1

 

Sending START request to MANAGER ...

EXTRACT EXT1 starting

 

 

GGSCI (localhost) 12> start ext2

 

Sending START request to MANAGER ...

EXTRACT EXT2 starting

 

 

GGSCI (localhost) 13> start rep1

 

Sending START request to MANAGER ...

REPLICAT REP1 starting

 

 

GGSCI (localhost) 14> start rep2

 

Sending START request to MANAGER ...

REPLICAT REP2 starting

 

 

GGSCI (localhost) 15> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     RUNNING     EXT1        00:00:23      00:00:05   

EXTRACT     RUNNING     EXT2        00:09:09      00:00:02   

REPLICAT    RUNNING     REP1        00:00:00      00:00:04   

REPLICAT    RUNNING     REP2        00:00:00      00:00:01 

 

2 在sqlplus環境中用sys使用者清空scott.tablehaishu.table中的資料

SQL> delete from scott.table;

SOL> delete from haishu.table;

 

3 在scott.test_table中插入資料,並從haishu.test_table中檢驗

SQL> insert into scott.test_table values('scott-001');

 

已建立 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from haishu.test_table;

 

ID

----------

scott-001

 

4 在haishu.test_table中插入資料,並從scott.test_table中驗證

SQL> insert into haishu.test_table values('haishu-001');

 

已建立 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from scott.test_table;

 

ID

----------

haishu-001

scott-001

 

5 刪除scott.test_table中的資料,並從haishu.test_table中驗證

SQL> delete from scott.test_table where id='haishu-001';

 

已刪除 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from haishu.test_table;

 

ID

----------

scott-001

 

6 刪除haishu.test_table中的資料,並從scott.test_table中查詢

SQL> delete from haishu.test_table where id='scott-001';

 

已刪除 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from scott.test_table;

 

未選定行

 

7 實驗結果

透過上述的測試,我們發現Linux下的單機雙向同步資料已經成功實現了。

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

相關文章