Linux下GoldenGate單機單向同步

zhenghaishu發表於2015-08-04

                                                            Linux下GoldenGate單機單向同步


一、配置Manager管理程的引數

1)檢視Manager程式狀態

GGSCI (localhost) 3> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     STOPPED                                          

 

 

GGSCI (localhost) 4>

 

2)編輯引數

GGSCI (John-PC) 3> edit params mgr

在新開啟的/u01/ogg/dirprm/mrg.prm檔案中輸入“port 7809”並儲存退出。

 

二、配置抽取程式

GGSCI (localhost) 2> add extract ext1,tranlog, begin now

EXTRACT added.

 

 

GGSCI (localhost) 3> add exttrail /u01/ogg/dirdat/st, extract ext1

EXTTRAIL added.

add exttrail /u01/ogg/dirdat/st, extract ext1表示透過ext1程式把資料抽取到本地的/u01/ogg/dirdat/st檔案中。

st代表scott,表示本實驗是要把scott.test_table中的資料同步到haishu.test_table中。當然也可以起其他名字,不過建議起的有意義一點。

exttrail表示本地。若要抽取到遠端服務中,應使用add rmttrail語句。

 

編輯抽取程式ext1引數

GGSCI (localhost) 4> edit params ext1

 

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

extract ext1

userid ogg,password oracle

rmthost 127.0.0.1,mgrport 7809

rmttrail /u01/ogg/dirdat/st

dynamicresolution

table scott.test_table;

因為這個實驗是本機上的單向同步,所以遠端IP地址即為本機地址127.0.0.1,當然也可以寫為實際的IP地址192.168.6.135

 

三、新增checkpoint

複製程式需要用到checkpoint表。

 

GGSCI (localhost) 5> edit params ./GLOBAL

這裡./表示當前目錄,即/u01/ogg/

./GLOBAL檔案中輸入以下內容,並儲存退出。

GGSCHEMA ogg

CHECKPOINTTABLE ogg.checkpoint

 

新增checkpoint

GGSCI (localhost) 6> add checkpointtable ogg.checkpoint

 

Successfully created checkpoint table ogg.checkpoint.

 

 

四、配置複製程式

GGSCI (localhost) 5> add replicat rep1,exttrail /u01/ogg/dirdat/st, checkpointtable ogg.checkpoint

REPLICAT added.

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

 

編輯rep1程式引數

GGSCI (John-PC) > edit params rep1

 

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

replicat rep1

userid ogg,password oracle

assumetargetdefs

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

map scott.test_table, target haishu.test_table

RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, OVERWRITE))

RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, OVERWRITE))

RESOLVECONFLICT (DELETEROWEXISTS, (DEFAULT, OVERWRITE))

RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, IGNORE))

RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, IGNORE));

 

五、測試同步結果

1 sqlplus環境中用sys使用者登入資料庫sqlplus / as sysdba

解鎖scott使用者

建立haishu使用者並授予grantconnect許可權

sys使用者下建立scott.test_table表和haishu.scott

 

SQL> create table scott.test_table(id varchar(10) primary key);

SQL> create table haishu.test_table(id varchar(10) primary key);

 

2 ogg環境中啟動ogg的管理程式、抽取程式和複製程式

GGSCI (localhost) 16> start mgr

 

Manager started.

 

 

GGSCI (localhost) 17> start ext1

 

Sending START request to MANAGER ...

EXTRACT EXT1 starting

 

 

GGSCI (localhost) 18> start rep1

 

Sending START request to MANAGER ...

REPLICAT REP1 starting

 

 

GGSCI (localhost) 19> info all

 

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

 

MANAGER     RUNNING                                          

EXTRACT     RUNNING     EXT1        00:00:00      00:16:45   

REPLICAT    RUNNING     REP1        00:00:00      00:00:01

程式狀態為running表示正常啟動;若為abendedstop表示出錯。可用“view report 程式名稱”來檢視錯誤資訊,比如“view report ext1”。

 

3 scott方案中插入一條資料並從haishu方案中檢驗

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

 

已建立 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from haishu.test_table;

 

ID

----------

scott-001

 

4 scott方案中刪除資料並從haishu方案中檢驗

SQL> delete from scott.test_table;

 

已刪除 1 行。

 

SQL> commit;

 

提交完成。

 

SQL> select * from haishu.test_table;

 

未選定行

 

上述實驗結果說明成功實現把scott.test_table中的資料同步到haishu.test_table中。

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

相關文章