原文连接http://blog.csdn.net/tianlesoftware/article/details/6992064
二.示例
我这里用3个节点做测试,节点1做Source DB,节点2和3做Target DB。 从GG1 发送data 到GG2和GG3。
DB:Oracle 11.2.0.3
OS: redhat 5.4
2.1 设置Manager
GGSCI (gg1) 3> edit params mgr
PORT 7809
2.2 设置Extract进程
GGSCI (gg1) 11> add extractext1,tranlog, begin now
GGSCI (gg1) 12> add exttrail/u01/ggate/dirdat/lt, extract ext1
GGSCI (gg1) 13> edit params ext1
GGSCI (gg1) 4> view params ext1
extract ext1
ENCRYPTTRAIL
userid ggate@gg1,passwordAACAAAAAAAAAAAFAPHODADQGAJVDSHPG,encryptkey default
--rmthost gg2,mgrport 7809
--rmttrail /u01/ggate/dirdat/lt
exttrail /u01/ggate/dirdat/lt
ddl include all objname dave.pdba;
table dave.pdba;
这里对密码进行了加密,有关加密这块,参考:
Oracle Golden Gate 系列十六 --配置 GG 安全 说明 与 示例
http://blog.csdn.net/tianlesoftware/article/details/6991263
2.3 在Source 端配置 DataPump
因为我们要发送到2个Target,所以要配置2个Data Pump 进程。
--data pump1:
GGSCI (gg1) 49> add extractdpump,exttrailsource /u01/ggate/dirdat/lt
GGSCI (gg1) 51> add rmttrail/u01/ggate/dirdat/lt, extract dpump
GGSCI (gg1) 5> view params dpump
extract dpump
userid ggate@gg1, password ggate
rmthost gg2, mgrport7809,compress,compressthreshold 0
rmttrail /u01/ggate/dirdat/lt
passthru
table dave.pdba;
--data pump2:
GGSCI (gg1) 49> add extract dpump2,exttrailsource/u01/ggate/dirdat/lt
GGSCI (gg1) 51> add rmttrail/u01/ggate/dirdat/lt, extract dpump2
GGSCI (gg1) 5> view params dpump2
extract dpump2
userid ggate@gg1, password ggate
rmthost gg3, mgrport7809,compress,compressthreshold 0
rmttrail /u01/ggate/dirdat/lt
passthru
table dave.pdba;
这里注意Data Pump 默认是从lt000000 开始读取trail 文件,如果是新搭建的GG 同步,那么都是从lt000000开始处理,所以没有问题,如果是后来修改称data pump,就需要根据extract 进程的错误提示信息,使用如下命令:
GGSCI(gg1) 82> alter extract dpump,extseqno 2,extrba1965317
具体参考:
Oracle GoldenGate 系列十 -- 配置 DataPump process 说明 与 示例
http://blog.csdn.net/tianlesoftware/article/details/6978501
2.4 分别在2个Target 配置Replicat
--配置checkpoint
GGSCI (gg2) 6> EDIT PARAMS ./GLOBALS
GGSCHEMA ggate
CHECKPOINTTABLE ggate.checkpoint
GGSCI (gg2) 12> dblogin useridggate@gg2,password ggate
GGSCI (gg2) 13> add checkpointtableggate.checkpoint
这部分,参考:
Oracle Golden Gate 系列十三 --配置GG进程检查点(checkpoint) 说明
http://blog.csdn.net/tianlesoftware/article/details/6983928
--配置 Replicat:
GGSCI (gg2) 14> add replicatrep1,exttrail /u01/ggate/dirdat/lt, checkpointtable ggate.checkpoint
GGSCI (gg2) 2> view params rep1
replicat rep1
DECRYPTTRAIL
ASSUMETARGETDEFS
userid ggate@gg2,password ggate
discardfile/u01/ggate/dirdat/rep1_discard.txt, append, megabytes 10
--HANDLECOLLISIONS
ddl include all
ddlerror default ignore retryop
map dave.pdba, target dave.pdba;
这里面有一个数据初始化的问题,具体参考:
Oracle Golden Gate 系列九 --GG 数据初始化装载 说明 与 示例
http://blog.csdn.net/tianlesoftware/article/details/6976551
Oracle GoldenGate 系列十二 --GG 数据初始化装载二 基于SCN 的初始化 说明 与 示例
http://blog.csdn.net/tianlesoftware/article/details/6982908
2.5 启动相关的进程进行
--Source DB
GGSCI (gg1) 17> start mgr
GGSCI (gg1) 19> start ext1
GGSCI (gg1) 26> info dpump2
EXTRACT DPUMP2 Initialized 2011-11-19 22:26 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:12:34 ago)
Log Read Checkpoint File /u01/ggate/dirdat/lt000000
First Record RBA 0
GGSCI (gg1) 28> info dpump
EXTRACT DPUMP Last Started 2011-11-1915:22 Status ABENDED
Checkpoint Lag 00:00:00 (updated 06:02:32 ago)
Log Read Checkpoint File /u01/ggate/dirdat/lt000014
2011-11-1915:44:00.966309 RBA 1009
GGSCI (gg1) 29> alterextract dpump2,extseqno 14,extrba 0
EXTRACT altered.
GGSCI (gg1) 30> info dpump2
EXTRACT DPUMP2 Initialized 2011-11-19 22:40 Status STOPPED
Checkpoint Lag 00:00:00 (updated 00:00:03 ago)
Log Read Checkpoint File /u01/ggate/dirdat/lt000014
First Record RBA 0
GGSCI (gg1) 31> start dpump
GGSCI (gg1) 32> start dpump2
GGSCI (gg1) 39> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING DPUMP 00:00:00 00:00:01
EXTRACT RUNNING DPUMP2 00:00:00 00:01:37
EXTRACT RUNNING EXT1 00:00:00 00:00:09
--2个TargetDB
GGSCI (gg3) 8> start rep1
GGSCI (gg3) 10> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:04
GGSCI (gg2) 15> start rep1
GGSCI (gg2) 17> info all
Program Status Group Lag Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:04
2.6 在Source 进行DML操作,验证同步
--Source DB
SQL> conn dave/dave;
Connected.
SQL> select count(*) from pdba;
COUNT(*)
----------
2678533
--Targt 1:
SQL> conn dave/dave;
Connected.
SQL> select count(*) from pdba;
COUNT(*)
----------
2678533
--Target 2:
SQL> conn dave/dave;
Connected.
SQL> select count(*) from pdba;
COUNT(*)
----------
2678533
--在Source 进行DML操作:
SQL> delete from pdba whererownum<1000;
999 rows deleted.
SQL> commit;
Commit complete.
SQL> select count(*) from pdba;
COUNT(*)
----------
2677534
--Target 1:
SQL> select count(*) from pdba;
COUNT(*)
----------
2677534
--Target 2:
SQL> select count(*) from pdba;
COUNT(*)
----------
2677534
同步成功。 至此GG 一对多的测试结束。