由于本文是实现sybase到oracle单相复制,sybase goldenGate需放到源端,oracle goldenGate 需放到目标端。
在源端的sybase goldenGate解压后进入到解压目录,点击ggsci.exe进入到命令行。
执行create subdirs命令创建子目录。
执行edit param mgr,在弹出的文本编辑器中输入进程端口port 15002(端口随便指定)。
接着执行 start mgr 启动进程,执行info mgr查看进程是否启动。
此处省略具体步骤,创建完表之后在sybase执行dbcc settrunc(‘ltm’,’valid’)
在命令行中执行dblogin SOURCEDB psc@JUNFENG987C7A9, USERID pscchina, PASSWORD pscchina登录数据库(注意SOURCEDB不是[email protected]:5000,在sybase的安装目录下的ini目录中sql.ini在加入[JUNFENG987C7A9]
master=NLWNSCK,10.3.1.35,5000
query=NLWNSCK,10.3.1.35,5000,此处用的是别名 )
执行 add trandata dbo.test2(test2是被复制的表)
执行info trandata dbo.test2查看表是否被标记
执行 edit param defgen在弹出的文本编辑器中输入DEFSFILE ./dirdef/source.def, PURGE
SOURCEDB psc@JUNFENG987C7A9, USERID pscchina, PASSWORD pscchina
TABLE 'dbo.TEST2';
在windows命令行中进入到goldenGate的安装目录,执行defgen paramfile dirprm/defgen.prm
在dirdef目录下生成的source.def拷贝到目标端goldenGate安装目录下的dirdef目录下
在目标端也需要执行1,2,3步骤,并创建数据库用户和表
在源端执行add extract eini,sourceistable,执行info extract *,tasks验证
在源端执行edit param eini,在弹出的文本编辑器中输入
EXTRACT eini
SETENV (NLS_LANG="AMERICAN_AMERICA.AL32UTF8") --只有抽取进程和复制进程参数文件中的NLS_LANG变量与源端数据库字符集一致,同步正常,不乱码
SOURCEDB psc@JUNFENG987C7A9, USERID pscchina, PASSWORD pscchina
RMTHOST 127.0.0.1, MGRPORT 15001
RMTTASK REPLICAT,GROUP rini
TABLE 'dbo.TEST2';
在目标端执行edit param rini,在弹出的文本编辑器中输入
REPLICAT rini
SETENV (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")
userid ggs,password ggs
DISCARDFILE ./dirrpt/rini.dsc, PURGE
SOURCEDEFS ./dirdef/source.def
MAP 'dbo.TEST2', TARGET 'GGS.TEST2';
在目标端执行 add replicat rini,specialrun
执行info replicat *,tasks验证是否添加成功
在源端执行 start extract eini,执行view report eini查看启动信息
在目标端执行 start extract rini,执行view report rini查看启动信息(可不执行)
执行完以上步骤后源端被复制表中的初始数据就被复制到目标端中对应的表了。
在源端执行add extract esyb,tranlog,begin now,执行info extract esyb验证是否添加成功。
执行edit param esyb在弹出的文本编辑器中输入
EXTRACT ESYB
SETENV (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")
SOURCEDB psc@JUNFENG987C7A9, USERID pscchina, PASSWORD pscchina
RMTHOST 127.0.0.1, MGRPORT 15001
RMTTRAIL ./dirdat/r2
TABLE dbo.TEST2;
执行 add RMTTRAIL ./dirdat/r2,EXTRACT ESYB,MEGABYTES 5
执行 INFO RMTTRAIL *验证是否添加成功
执行start extract ESYB
执行info extract ESYB,detail
View report ESYB验证是否启动正常
在目标端执行edit param ./GLOBALS在文本编辑器中输入
Checkpointtable ggs.ggschkpt(ggs为oracle用户)
执行 dblogin userid ggs,password ggs登录到oracle
执行add checkpointtable ggschkpt
在目标端执行add replicat rora,exttrail ./dirdat/r2,checkpointtable ggs.ggschkpt
接着执行edit param rora在文本编辑器中输入
REPLICAT RORA
SETENV (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")
USERID ggs, PASSWORD ggs
HANDLECOLLISIONS
SOURCEDEFS ./dirdef/source.def
DISCARDFILE ./dirrpt/RORA.DSC, PURGE
MAP 'dbo.TEST2', TARGET 'GGS.TEST2';
执行 start replicat rora启动复制进程
执行info replicat rora查看是否启动成功
总结:goldenGate配置比较繁琐,要步步小心,源端抓取进程字符集和目标端复制进程字符集一定要和源端数据库的字符集一致,否则中文会乱码。