goldengate不使用資料泵完成Oracle-Oracle的雙向複製

還不算暈發表於2013-10-28
配置資料庫環境、goldengate使用者,安裝goldengate等操作,參考http://blog.csdn.net/q947817003/article/details/13293751這裡面的1-4步。
不使用資料泵完成Oracle-Oracle的雙向複製所需的配置:--我這裡只配置同步test使用者的 test1表。

1.主庫的配置:

#####配置Extract
按順序執行以下操作:
add extract ext1,tranlog, begin now
add exttrail /u01/ogg/dirdat/lt, extract ext1

edit params ext1
在開啟的編輯視窗寫入以下:----這裡使用為OGG建立的使用者來登陸,同時要注意路徑的對照。
extract ext1
userid ogg, password ogg
rmthost 192.168.1.213, mgrport 7809
rmttrail /u01/ogg/dirdat/lt
table test.*;
#####配置Replicat
edit params ./GLOBAL
在編輯視窗輸入以下兩行:
GGSCHEMA ogg
CHECKPOINTTABLE ogg.checkpoint

dblogin userid ogg,password ogg
add checkpointtable ogg.checkpoint
add replicat rep2,exttrail /u01/ogg/dirdat/at, checkpointtable ogg.checkpoint

edit params rep2
在彈出編輯視窗輸入:---我這裡只設定了同步test使用者的test1表--這裡的使用者和表名在下一步的測試中再建立。
可以使用handlecollisions引數,避免主庫與目標庫所需要同步的表中資料不一致導致的接收程式掛起。
replicat rep2
handlecollisions
ASSUMETARGETDEFS
userid ogg,password ogg
discardfile /u01/ogg/dirdat/rep2_discard.txt,append, megabytes 10
map test.test1, target test.test1;

配置完成後的程式如下:--注意我這裡的程式狀態是啟動後的。--建議主庫及目標庫都配置程式完成後再啟動。
GGSCI (bys001.oel.com) 11> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                          
EXTRACT     RUNNING     EXT1        00:00:00      00:00:00   
REPLICAT    RUNNING     REP2        00:00:00      00:00:02   

2.目標庫的配置

#####配置Replicat
edit params ./GLOBAL
在編輯視窗輸入以下兩行:
GGSCHEMA ogg
CHECKPOINTTABLE ogg.checkpoint
逐次輸入以下命令:
dblogin userid ogg,password ogg
add checkpointtable ogg.checkpoint
add replicat rep1,exttrail /u01/ogg/dirdat/lt, checkpointtable ogg.checkpoint

edit params rep1
在彈出編輯視窗輸入以下:---我這裡只設定了同步test使用者的test1表--這裡的使用者和表名在下一步的測試中再建立。
replicat rep1
handlecollisions
ASSUMETARGETDEFS
userid ogg,password ogg
discardfile /u01/ogg/dirdat/rep1_discard.txt,append, megabytes 10
map test.test1, target test.test1;

#####配置Extract
按順序執行以下命令:
add extract ext2,tranlog, begin now
add exttrail /u01/ogg/dirdat/at, extract ext2

edit params ext2
在開啟的編輯視窗寫入:
extract ext2
TRANLOGOPTIONS EXCLUDEUSER ogg
userid ogg, password ogg
rmthost 192.168.1.211, mgrport 7809
rmttrail /u01/ogg/dirdat/at
table test.*;
配置完成後的程式如下:--注意我這裡的程式狀態是啟動後的。
GGSCI (bys2.oel.com) 32> info all
Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING                                          
EXTRACT     RUNNING     EXT2        00:00:00      00:00:07   
REPLICAT    RUNNING     REP1        00:00:00      00:00:01 

3.啟動OGG的程式

程式增加完畢,然後分別在主和目標庫中執行啟動程式的命令
啟動程式的命令示例如下:--注意所在庫的程式名
start mgr
start ext1
start rep2
發出啟動程式命令後使用 info all 命令檢視程式是否已經是 RUNNING狀態。
如果是ABENDED掛起狀態,可以通過檢查OGG安裝目錄下的ggserr.log 檔案,檢視出錯原因並解決後重新啟動程式。

4.測試資料同步情況:

在主庫及目標庫分別建立測試表:
create table test1(aa varchar2(10)  constraint pk_aa primary key);
然後分別從主庫及目標庫插入資料來測試資料是否同步:
主庫插入資料:
[oracle@bys001 ogg]$ sqlplus test/test
TEST@bys1>set time on
15:36:57 TEST@bys1>select * from test1;
no rows selected
15:37:02 TEST@bys1>insert into test1 values(123);
1 row created.
15:37:13 TEST@bys1>commit;
Commit complete.
15:37:16 TEST@bys1>select * from test1;
AA
--------------------
123
目標庫查詢:
[oracle@bys2 ogg]$ sqlplus test/test
TEST@bys2>select * from test1;
no rows selected
TEST@bys2>set time on
15:36:50 TEST@bys2>select * from test1;
AA
--------------------
123

#####
在目標庫插入資料:
15:40:13 TEST@bys2>insert into test1 values(456);
1 row created.
15:40:25 TEST@bys2>commit;
Commit complete.
在主庫查詢:
15:40:10 TEST@bys1>
15:40:30 TEST@bys1>select * from test1;
AA
--------------------
123
456

相關文章