oracle在开启GoldenGate对表进行复制之前,两张表的数据可能是不一样的,这时就必须让数据初始化,而实现数据初始化有很多种方法,像是数据泵,rman。
今天我用的GoldenGate自带的方法
需要在源端和目标端各自建立一个进程进行复制
源端
GGSCI (linfan) 46>add extract initext, sourceistable
GGSCI (linfan) 47> edit param initrext
extract initext
userid gg,password gg
rmthost linfan2,mgrport 7809
rmttask replicat,group initrep
table scott.lala;
目标端
GGSCI (linfan) 47>add replicat initrep, specialrun
GGSCI (linfan2) 48> edit param initrep
replicat initrep
ASSUMETARGETDEFS
DISCARDFILE ./dirrpt/rep1.dsc, APPEND, MEGABYTES 100
userid gg, password gg
MAP scott.lala, TARGET scott.lala;
测试
源端创建一张表然后插入数据
SQL> select * from lala;
ID NAME
---------- ---------------
1 zhangsan
2 lisi
3 wangwu
4 zhaoliu
4 rows selected.
目标端的表是空表
SQL> select * from lala;
no rows selected
源端启动进程
GGSCI (linfan) 10> start mgr
GGSCI (linfan) 10> start extract initext
GGSCI (linfan) 9> info initext
EXTRACT INITEXT Last Started 2016-10-12 08:45 Status STOPPED
Checkpoint Lag Not Available
Log Read Checkpoint Table SCOTT.LALA
2016-10-12 08:45:11 Record 4
Task SOURCEISTABLE
目标端的表
SQL> select * from lala;
ID NAME
---------- ---------------
1 zhangsan
2 lisi
3 wangwu
4 zhaoliu
已经有数据了