Linux下GoldenGate单机双向同步
上节实现了Linux系统中数据从scott.test_table到haishu.test_table的单向同步。本节在上节的基础上实现数据从haishu.test_table到scott.test_table的同步。这样就实现了数据在scott.test_table和haishu.test_table之间的双向同步。
一、配置抽取进程
GGSCI (localhost) 1> add extract ext2,tranlog, begin now
EXTRACT added.
GGSCI (localhost) 2> add exttrail /u01/ogg/dirdat/hs, extract ext2
EXTTRAIL added.
这里add exttrail /u01/ogg/dirdat/hs, extract ext2表示通过ext2进程把数据库中的数据抽取到本地的/u01/ogg/dirdat/hs文件中。
hs是haishu的简称,代表数据要从haishu.test_table中同步到scott.test_table中。当然也可以用别的字符,不过建议使用有意义的字符。
exttrail表示本地。若要把数据抽取到远程机器上,应使用“add rmttrail……”句式。
编辑抽取进程的参数:
GGSCI (localhost) 3> edit params ext2
在新打开的/u01/ogg/dirprm/ext2.prm中输入以下内容并保存退出
extract ext2
userid ogg,password oracle
rmthost 127.0.0.1,mgrport 7809
rmttrail /u01/ogg/dirdat/hs
dynamicresolution
table haishu.test_table;
二、配置复制进程
GGSCI (localhost) 4> add replicat rep2,exttrail /u01/ogg/dirdat/hs, checkpointtable ogg.checkpoint
REPLICAT added.
这个句子表示从本机的/u01/ogg/dirdat/hs中读取数据,并通过rep2进程把这些数据复制到数据库中。ogg.checkpoint是rep2的容器表。
编辑复制进程参数
GGSCI (localhost) 5> edit params rep2
在新打开的/u01/ogg/dirprm/rep2.prm中输入如下内容并保存退出
replicat rep2
userid ogg,password oracle
assumetargetdefs
discardfile /u01/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));
三、测试
1 在ogg环境中开ogg的启管理进程,抽取进程和同步进程
GGSCI (localhost) 10> start mgr
Manager started.
GGSCI (localhost) 11> start ext1
Sending START request to MANAGER ...
EXTRACT EXT1 starting
GGSCI (localhost) 12> start ext2
Sending START request to MANAGER ...
EXTRACT EXT2 starting
GGSCI (localhost) 13> start rep1
Sending START request to MANAGER ...
REPLICAT REP1 starting
GGSCI (localhost) 14> start rep2
Sending START request to MANAGER ...
REPLICAT REP2 starting
GGSCI (localhost) 15> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:23 00:00:05
EXTRACT RUNNING EXT2 00:09:09 00:00:02
REPLICAT RUNNING REP1 00:00:00 00:00:04
REPLICAT RUNNING REP2 00:00:00 00:00:01
2 在sqlplus环境中用sys用户清空scott.table和haishu.table中的数据
SQL> delete from scott.table;
SOL> delete from haishu.table;
3 在scott.test_table中插入数据,并从haishu.test_table中检验
SQL> insert into scott.test_table values('scott-001');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from haishu.test_table;
ID
----------
scott-001
4 在haishu.test_table中插入数据,并从scott.test_table中验证
SQL> insert into haishu.test_table values('haishu-001');
已创建 1 行。
SQL> commit;
提交完成。
SQL> select * from scott.test_table;
ID
----------
haishu-001
scott-001
5 删除scott.test_table中的数据,并从haishu.test_table中验证
SQL> delete from scott.test_table where id='haishu-001';
已删除 1 行。
SQL> commit;
提交完成。
SQL> select * from haishu.test_table;
ID
----------
scott-001
6 删除haishu.test_table中的数据,并从scott.test_table中查询
SQL> delete from haishu.test_table where id='scott-001';
已删除 1 行。
SQL> commit;
提交完成。
SQL> select * from scott.test_table;
未选定行
7 实验结果
通过上述的测试,我们发现Linux下的单机双向同步数据已经成功实现了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29485627/viewspace-1762421/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29485627/viewspace-1762421/