Windows下GoldenGate单机双向同步
上节实现了Windows系统中数据从scott.test_table到haishu.test_table的单向同步。本节在上节的基础上实现数据从haishu.test_table到scott.test_table的同步。这样就实现了数据在scott.test_table和haishu.test_table之间的双向同步。
一、配置抽取进程
GGSCI (John-PC) > add extract ext2,tranlog, begin now
GGSCI (John-PC) > add exttrail F:\app\Administrator\ogg\dirdat\hs, extract ext2
这里add exttrail F:\app\Administrator\ogg\dirdat\hs, extract ext2表示通过ext2进程把数据库中的数据抽取到本地的F:\app\Administrator\ogg\dirdat\hs文件中。
hs是haishu的简称,代表数据要从haishu.test_table中同步到scott.test_table中。当然也可以用别的字符,不过建议使用有意义的字符。
exttrail表示本地。若要把数据抽取到远程机器上,应使用“add rmttrail……”句式。
编辑抽取进程的参数:
GGSCI (John-PC) > edit params ext2
在弹出框中选“是”
在ext2.prm中输入参数
extract ext2
userid ogg,password oracle
rmthost 127.0.0.1,mgrport 7809
rmttrail F:\app\Administrator\ogg\dirdat\hs
dynamicresolution
table haishu.test_table;
编辑完后保存ext2.prm。
二、配置复制进程
GGSCI (John-PC) > add replicat rep2,exttrail F:\app\Administrator\ogg\dirdat\hs, checkpointtable ogg.checkpoint
这个句子表示从本机的F:\app\Administrator\ogg\dirdat\hs中读取数据,并通过rep2进程把这些数据复制到数据库中。ogg.checkpoint是rep2的容器表。
编辑复制进程参数
GGSCI (John-PC) > edit params rep2
在弹出的提示框中选“是”
在rep2.prm中输入如下内容:
replicat rep2
userid ogg,password oracle
assumetargetdefs
discardfile F:\app\Administrator\ogg\dirdat\rep2_discard.txt,append
map haishu.test_table, target scott.test_table
RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, OVERWRITE))
RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, OVERWRITE))
RESOLVECONFLICT (DELETEROWEXISTS, (DEFAULT, OVERWRITE))
RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, IGNORE))
RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, IGNORE));
保存rep2.prm并关掉。
三、测试
1 用sys用户清空scott.table和haishu.table中的数据
SQL> delete from scott.table;
SOL> delete from haishu.table;
2 开启管理进程,抽取进程和同步进程
GGSCI (John-PC) > start mgr
GGSCI (John-PC) > start ext1
GGSCI (John-PC) > start ext2
GGSCI (John-PC) > start rep1
GGSCI (John-PC) > start rep2
3 在scott.test_table中插入数据,并从haishu.test_table中检验
SQL> insert into scott.test_table values('scott-001');
SQL> commit;
SQL> select * from haishu.test_table;
4 在haishu.test_table中插入数据,并从scott.test_table中验证
SQL> insert into haishu.test_table values('haishu-001');
SQL> commit;
SQL> select * from scott.test_table;
5 删除scott.test_table中的数据,并从haishu.test_table中验证
SQL> delete from scott.test_table where id='haishu-001';
SQL> commit;
SQL> select * from haishu.test_table;
6 删除haishu.test_table中的数据,并从scott.test_table中查询
SQL> delete from haishu.test_table where id='scott-001';
SQL> commit;
SQL> select * from scott.test_table;
7 实验结果
通过上述的测试,我们发现Windows系统中的单机双向同步已经成功实现了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29485627/viewspace-1760339/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29485627/viewspace-1760339/