oracle用ogg同步到sqlserver的资源非常少,所以亲测过后立马记下来,分享给那些需要的人们。如果不是被逼无奈,建议还是用sqlserver自带的复制订阅,配置比较简单。
环境:
source: 54 Centos7 oracle12.2 ogg12.3
target : 52 Windows sqlserver2012 ogg12.3
建议不要用oracle12.2 还是用12.1吧。ogg尽量比oracle版本新一点。如ogg12.3 > oracle12.2。
配置参数:
source:
1. 添加defgen参数文件(由于是异构数据库之间的传输,需要转换字段类型,需用到defgen工具生成定义文件)
GGSCI (tmis-3 as c##ggadmin@orcl/CDB$ROOT) 16> view params defgen defsfile /data/ogg/dirdef/tmisuser.def userid system@tmis,password Sjtsoft123 TABLE tmis.tmisuser.PR_Practitioner;
2. 运行defgen工具生成定义文件
进入ogg安装目录
./defgen paramfile /data/ogg/dirprm/defgen.prm
会在dirdef目录下生成一个tmisuser.def的定义文件
3.建立ogg用户 赋权限
略:
4.添加mgr GGSCI (WIN-GRANHIGH6KV) 1> view params mgr PORT 7809 AUTOSTART EXTRACT * AUTORESTART EXTRACT *,RETRIES 3, WAITMINUTES 5, RESETMINUTES 10
5.添加全局参数 GGSCI (WIN-GRANHIGH6KV) 2> view params ./GLOBALS GGSCHEMA c##ggadmin
6.添加抽取进程 GGSCI (WIN-GRANHIGH6KV) 3> view params ext5452 extract ext5452 SETENV(ORACLE_SID='orcl') userid c##ggadmin,password ggadmin exttrail /data/ogg/dirdat/ea DYNAMICRESOLUTION GETTRUNCATES TABLE tmis.tmisuser.PR_Practitioner;
7.添加投递进程: GGSCI (WIN-GRANHIGH6KV) 4> view params p5452 extract p5452 SETENV(ORACLE_SID='orcl') userid c##ggadmin,password ggadmin rmthost 10.1.2.52,mgrport 7809 rmttrail D:oggdirdatpb PASSTHRU TABLE tmis.tmisuser.PR_Practitioner;
8.添加表级附加日志 add trandata tmis.tmisuser.PR_Practitioner
--添加抽取进程 add extract ext5452,integrated tranlog,begin now add exttrail /data/ogg/dirdat/ea,extract ext5452 --注册抽取进程 REGISTER EXTRACT ext5452 DATABASE CONTAINER(tmis) --添加投递进程 add extract p5452,exttrailsource /data/ogg/dirdat/ea,begin now add rmttrail D:oggdirdatpb,extract p5452
target:
1.配置ODBC数据源 控制面板-管理工具-数据源(ODBC),添加系统DNS,取名为 tmisdb,注意择驱动程序类型为SQL Server Native Client 11.0
GGSCI (ZJPC) 2> view params mgr port 7809 ACCESSRULE, PROG *, IPADDR 10.1.2.54, ALLOW
2.添加checkpointtable(建议添加,stop rep后会产生一个检查点,start之后会继续同步) GGSCI (ZJPC) 3> view params ./globals checkpointtable dbo.ckp GGSCI (tmis-5) 1> edit params ./globals checkpointtable dbo.ckp GGSCI (tmis-5) 1> dblogin sourcedb tmisdb userid sa password admin@123 GGSCI (tmis-5) 1> add checkpointtable dbo.ckp
3.添加复制rep进程: GGSCI (ZJPC) 4> view params rep5452 replicat rep5452 sourcedefs D:oggdirdef misuser.def targetdb tmisdb userid sa, password admin@123 reperror default,discard discardfile D:oggdirrpt pl.dsc append gettruncates handlecollisions MAP tmis.tmisuser.PR_Practitioner,TARGET dbo.PR_Practitioner;
--添加复制进程 add replicat rep5452,exttrail D:oggdirdatpb,begin now,checkpointtable dbo.ckp
启动进程,同步正常。但是数据初始化不太好弄,只想到init load 进程抽取,但是出现抽取数据不全,汉字乱码现象,打算改用kettle试试初始化俩个数据库,不知道有没有什么好的方法。希望各位网友给点帮助。