Oracle11gR2_GoldenGate中使用datapump实现基于SCN的初始化
1、测试环境
Oracle:11.2.0.4
OGG:11.2.1.0.1
OS:OL 6.5
2、清理源端和目标端环境
2.1 目标端:
stop rep1
dblogin userid ogg,password ogg
delete rep1
2.2 源端:
dblogin userid ogg,password ogg
delete ext1
delete pump1
注:之前的环境已经开启了DDL复制。
3、重新配置GG环境
3.1 源端:
创建ext1进程:
GGSCI (oraclesrc) 2> add extract ext1,tranlog,begin now
EXTRACT added.
GGSCI (oraclesrc) 3> add exttrail /u01/ogg/dirdat/lt,extract ext1
EXTTRAIL added.
GGSCI (oraclesrc) 4> view params ext1
extract ext1
userid ogg@orasrc, password ogg
--rmthost 172.26.181.103, mgrport 7809
--rmttrail /u01/ogg/dirdat/lt
exttrail /u01/ogg/dirdat/lt
ddl include mapped objname test.*;
table test.*;
创建pump1进程:
GGSCI (oraclesrc) 5> add extract pump1,exttrailsource /u01/ogg/dirdat/lt
EXTRACT added.
GGSCI (oraclesrc) 6> add rmttrail /u01/ogg/dirdat/lt,extract pump1
RMTTRAIL added.
GGSCI (oraclesrc) 7> view params pump1
extract pump1
userid ogg@orasrc, password ogg
rmthost 172.26.181.103, mgrport 7809
rmttrail /u01/ogg/dirdat/lt
passthru
table test.*;
3.2 目标端
创建checkpoint表
GGSCI (oracledest) 6> view param ./globals
GGSCHEMA OGG
CHECKPOINTTABLE OGG.CHECKPOINT
注:之前的环境已经有这个表了,所以这里没有重新创建,否则执行创建命令:
dblogin userid ogg,password ogg
add checkpointtable ogg.checkpoint
创建rep1进程:
GGSCI (oracledest) 9> add replicat rep1,exttrail /u01/ogg/dirdat/lt,checkpointtable ogg.checkpoint
REPLICAT added.
GGSCI (oracledest) 10> view param rep1
replicat rep1
ASSUMETARGETDEFS
userid ogg@oradest,password ogg
discardfile /u01/ogg/dirdat/rep1_discard.txt,append,megabytes 10
DDL
map test.*,target test.*;
3.3 启动ext1与pump1进程
start ext1
start pump1
4、使用expdp/impdp完成初始化
创建oracle目录:
[oracle@oraclesrc u01]$ mkdir oradir
SQL> create directory oradir as '/u01/oradir';
Directory created.
查看当前SCN:
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
1842214
按SCN执行导出:
[oracle@oraclesrc u01]$ expdp system/oracle directory=oradir dumpfile=orasrc.dmp logfile=orasrc.log SCHEMAS=test flashback_scn=1842214;
拷贝文件到目标:
[oracle@oraclesrc ogg]$ scp /u01/oradir/orasrc.dmp 172.26.181.103:/home/oracle
在目标端执行导入:
[oracle@oracledest oradir]$ impdp system/oracle DIRECTORY=oradir DUMPFILE=orasrc.dmp SCHEMAS=test logfile=imp.log
5、启动rep1进程
启动之前在源端执行操作,再看看同步情况。
源端:
SQL> select * from test.t1;
C1
----------
3
6
7
1
4
5
8888
2
8 rows selected.
SQL> delete from test.t1 where c1=8888;
1 row deleted.
SQL> commit;
目标端启动rep1:
GGSCI (oracledest) 20> start rep1 aftercsn 1842214
目标端验证同步情况:
SQL> select * from test.t1;
C1
----------
3
6
7
1
4
5
2
已经可以正常同步了。