1 本机,Win7系统,Oracle 11g,IP为10.0.30.135
2 虚拟机,Oracle Linux 6.5系统,Oracle 11g, IP为192.168.6.135
3 关闭两台机器的防火墙
4 测试两台机子是否能互相拼通
1)Windows ping Linux
2)Linux ping Windows
# ping 10.0.30.135 -c 4
PING 10.0.30.135 (10.0.30.135) 56(84) bytes of data.
64 bytes from 10.0.30.135: icmp_seq=1 ttl=128 time=0.967 ms
64 bytes from 10.0.30.135: icmp_seq=2 ttl=128 time=0.857 ms
64 bytes from 10.0.30.135: icmp_seq=3 ttl=128 time=0.723 ms
64 bytes from 10.0.30.135: icmp_seq=4 ttl=128 time=0.825 ms
--- 10.0.30.135 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3032ms
rtt min/avg/max/mdev = 0.723/0.843/0.967/0.087 ms
1 先考虑数据从Windows服务器到Linux服务器的同步过程
(1)首先需要在Windows服务器中开启一个抽取进程,作用是把本机数据库里的相关日志信息读取到本地的trail文件中。
(2)其次在Windows服务器中开启一个投递进程,作用是把本地的trail文件,即F投递到远程Linux服务器中。
(3)最后在Linux服务器中开启一个复制进程,其作用是从本机的trail文件(上一步从Windows服务器中投递过来的)中的数据信息读取到本地数据库中。
整个过程如下图所示:
2 再考虑数据从Linux服务器到Windows服务器的同步过程
与1中的步骤类似,也需要三个步骤
(1)在Linux中开启抽取进程,作用是把本机数据库中的相关日志信息读取到本地trail文件中。
(2)在Linux中开启投递进程,作用是把上一步得到的trail文件投递到远程Windows服务器中。
(3)在Windows中开启同步进程,作用是把本机中的trail文件(上一步中从Linux服务器中投递过来的)中的数据信息读取到本机数据库中。
见第一章第一节和第二节。
1 Windows下的Manager进程配置步骤见本章第一节
2 Linux下的Manager进程配置步骤见本章第三节
1 Windows下添加checkpoint表的步骤见本章第一节
2 Linux下添加checkpoint表的步骤见本章第三节
1 配置Windows服务器的抽取进程
GGSCI (John-PC) > add extract ext_w,tranlog, begin now
GGSCI (John-PC) > add exttrail F:\app\Administrator\ogg\dirdat\wt, extract ext_w
这里ext_w中的w代表Windows平台,也可以起其他名字,但最好起的有意义一点。
add exttrail表示把相关日志信息抽取到本地trail文件中,wt代表本地Windows服务器的trail文件。也可以起其他的名字,但最好起得有意义一点,并且必须是两个字符。此进程启动后,GoldenGate会自动在wt后面添加6位数字,比如wt000000。
如果是用add rmttrail,则表示直接抽取到远程服务器中,这样就不需要投递进程了。
编辑抽取进程ext_w参数:
GGSCI (John-PC) > edit params ext_w
在弹出框中选“是”
在ext_w.prm中输入参数
extract ext_w
userid ogg, password oracle
exttrail F:\app\Administrator\ogg\dirdat\wt
table scott.test_table;
保存并关闭
2 配置Windows服务器的投递进程
GGSCI (John-PC) > add extract pum_w, exttrailsource F:\app\Administrator\ogg\dirdat\wt, begin now
GGSCI (John-PC) > add rmttrail /u01/ogg/dirdat/rt, extract pum_w
这里pum_w中的w代表Windows平台,可起为其他名字,但最好起的有意义一点。
wt表示Windows下的trail文件,是在上一步中通过抽取进程得到的。
rt表示远程remote,即Linux服务器中的trail文件,可以修改为其他的名字,但最好起的有意义一点,且必须为两个字符。当此进程启动时,rt后面会自动加上六位数字,变成形如rt000000的文件名。
这两个句子的意思是把上一步抽取进程产生的文件F:\app\Administrator\ogg\dirdat\wt投递为远程的/u01/ogg/dirdat/rt文件。
编辑投递进程参数
GGSCI (John-PC) > edit params pum_w
弹出框中选“是”
在pum_w.prm中输入参数
extract pum_w
userid ogg, password oracle
rmthost 192.168.6.135, mgrport 7809
rmttrail /u01/ogg/dirdat/rt
table scott.test_table;
保存并关闭
3 配置Linux服务器的复制进程
GGSCI (localhost) 12> add replicat rep_l, exttrail /u01/ogg/dirdat/rt, checkpointtable ogg.checkpoint
REPLICAT added.
rep_l中的l代表linux服务器,也可以随意取其他的名字,但最好能取个望文知义的名字。
add replicat rep_l, exttrail F:\app\Administrator\ogg\dirdat\rt表示通过rep_l进程从本机(这里指Linux服务器)的/u01/ogg/dirdat/rt文件中复制数据到数据库中,ogg.checkpoint则为rep_l的容器表。这里/u01/ogg/dirdat/rt是从上一步得到的。
编辑复制进程参数
GGSCI (localhost) 13> edit params rep_l
在打开的/u01/ogg/dirprm/rep_l.prm中输入如下内容:
replicat rep_l
userid ogg, password oracle
assumetargetdefs
discardfile /u01/ogg/dirdat/rep_l_discard,append
map scott.test_table, target haishu.test_table
RESOLVECONFLICT (UPDATEROWEXISTS, (DEFAULT, OVERWRITE))
RESOLVECONFLICT (INSERTROWEXISTS, (DEFAULT, OVERWRITE))
RESOLVECONFLICT (DELETEROWEXISTS, (DEFAULT, OVERWRITE))
RESOLVECONFLICT (UPDATEROWMISSING, (DEFAULT, IGNORE))
RESOLVECONFLICT (DELETEROWMISSING, (DEFAULT, IGNORE));
4 测试
(1)启动Windows和Linux的manager进程
GGSCI (localhost) 1> start mgr
Manager started.
GGSCI (localhost) 2> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT STOPPED REP_L 00:00:00 01:01:11
(2)启动Windows服务器的ext_w和pum_w进程
(3)启动Linux服务器的rep_l进程
GGSCI (localhost.localdomain) 12> start rep_l
Sending START request to MANAGER ...
REPLICAT REP_L starting
GGSCI (localhost.localdomain) 13> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP_L 00:00:00 00:00:09
(4)在Windows服务器中插入一条数据,并在Linux服务器中检验
SQL> insert into scott.test_table values(‘scott-001’);
SQL> commit;
[oracle@localhost ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期三 7月 29 14:36:46 2015
Copyright (c) 1982, 2009, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from haishu.test_table;
ID
----------
scott-001
SQL>
测试结果显示数据成功从Windows服务器同步到Linux服务器。
1 配置Linux服务器的抽取进程
GGSCI (localhost) 7> add extract ext_l,tranlog, begin now
EXTRACT added.
GGSCI (localhost) 8> add exttrail /u01/ogg/dirdat/lt, extract ext_l
EXTTRAIL added.
这里ext_l中的l代表linux平台。
lt代表linux下的trail文件写。也可以用其他的字符,但最好是有意义的字符,且必须是两个字符。进程启动后lt后会自动加上六个数字,生成的trail文件名类似lt000000。
add exttrail /u01/ogg/dirdat/lt, extract ext_l表示通过ext_l进程把数据抽取到本地(这里指的是Linux服务器)的/u01/ogg/dirdat/lt文件中。
编辑抽取进程ext_l参数:
GGSCI (localhost) > edit params ext_l
在打开的/u01/ogg/dirprm/ext_l.prm中输入内容
extract ext_l
userid ogg, password oracle
exttrail /u01/ogg/dirdat/lt
table haishu.test_table;
2 配置Linux服务器的投递进程
GGSCI (localhost) 17> add extract pum_l, exttrailsource /u01/ogg/dirdat/lt, begin now
EXTRACT added.
GGSCI (localhost) 18> add rmttrail F:\app\Administrator\ogg\dirdat\rt, extract pum_l
RMTTRAIL added.
这里pum_l中的l代表Linux平台,可起为其他名字,但最好起的有意义一点。
lt表示Linux下的trail文件,是在上一步中通过抽取进程得到的。
rt表示远程remote,即Windows服务器中的trail文件,可以修改为其他的名字,但最好起的有意义一点,且必须为两个字符。当此进程启动时,rt后面会自动加上六位数字,变成形如rt000000的文件名。
这两个句子的意思是把上一步抽取进程产生的文件/u01/ogg/dirdat/lt投递为远程的F:\app\Administrator\ogg\dirdat\rt文件。
编辑投递进程参数
GGSCI (localhost) > edit params pum_l
在打开的/u01/ogg/dirdat/pum_l.prm文件中输入参数
extract pum_l
userid ogg, password oracle
rmthost 10.0.30.135, mgrport 7809
rmttrail F:\app\Administrator\ogg\dirdat\rt
table haishu.test_table;
3 配置Windows服务器的复制进程
GGSCI (John-PC) > add replicat rep_w, exttrail F:\app\Administrator\ogg\dirdat\rt, checkpointtable ogg.checkpoint
这里add replicat rep_w, exttrail F:\app\Administrator\ogg\dirdatrtl表示通过rep_w进程从本机(这里指Windows服务器)的F:\app\Administrator\ogg\dirdat\rt文件中复制数据到数据库中,ogg.checkpoint则为rep_w的容器表。
编辑复制进程内容
GGSCI (John-PC) > edit params rep_w
弹出框中选“是”
在新打开的rep_w.prm中输入如下内容并保存
replicat rep_w
userid ogg,password oracle
assumetargetdefs
discardfile F:\app\Administrator\ogg\dirdat\rep_w_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));
4 测试
(1)分别启动Linux和Windows服务器的Manager进程
(2)启动Linux服务器的ext_l和pum_l进程
GGSCI (localhost.localdomain) 21> start ext_l
Sending START request to MANAGER ...
EXTRACT EXT_L starting
GGSCI (localhost.localdomain) 22> start pum_l
Sending START request to MANAGER ...
EXTRACT PUM_L starting
GGSCI (localhost.localdomain) 23> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT_L 00:15:29 00:00:06
EXTRACT RUNNING PUM_L 00:00:00 00:08:38
REPLICAT RUNNING REP_L 00:00:00 00:00:08
(3)启动Windows服务器的rep_w进程
(4)在Linux服务器插入一条数据
SQL> insert into haishu.test_table values('haishu-001');
已创建 1 行。
SQL> commit;
提交完成。
SQL>
在Windows中检验
SQL> select * from scott.test_table;
(5)在Windows中删除一条数据
SQL> delete from scott.test_table where id='haishu-001';
SQL> commit;
在Linux中检验
SQL> select * from haishu.test_table;
ID
----------
scott-001
SQL>
(6)在Linux中删除一条数据
SQL> delete from haishu.test_table where id='scott-001';
已删除 1 行。
SQL> commit;
提交完成。
SQL>
在Windows中检验
SQL> select * from scott.test_table;
上述三次实验结果表明成功实现了数据在Windows和Linux之间的双向同步。
原文地址:http://lovewifelovelif.blog.itpub.net/29485627/viewspace-1766772/
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30220976/viewspace-2097301/ ,如需转载,请注明出处,否则将追究法律责任。