摘要:
- sybase版本:Sybase15(源端)
- Oracle版本:11g(目标端)
- Goldengate版本:11.2.0.1.0(源端),12c(目标端)
- 个人博客:www.czhiying.cn
Goldengate同步原理:
Oracle GoldenGate软件是一种基于日志的结构化数据复制备份软件,它通过解析源数据库在线日志或归档日志获得数据的增量变化,再将这些变化应用到目标数据库,从而实现源数据库与目标数据库同步。参考图如下:
从上图可以知道,Ogg的同步实现方式有两种:
- 在源端建立Extract进程捕获日志变化,形成Ogg自身定义的Trail文件,Trail文件不保存在本地,通过网络方式,直接传输到目的端;然后目的端通过Replicat进程解析Trail文件,将变化支付到目标端数据库;
- 在 源端建立Extract进程捕获日志变化,形成Ogg自身定义的Trail文件,Trail文件保存在本地,然后在源端建立Data Pump进程(实际也是Extract进程,不过职能不同,我们在叫法上将其区分);然后通过Data Pump进程将产生的Trail文件传输到目的端;然后目的端通过Replicat进程解析Trail文件,将变化支付到目标端数据库;
既然存在两种同步方式,存在即有理,但是我还是推荐使用第二种方式同步数据。因为这样本地有保存Trail文件,有保障一点。所以我下面的介绍也是基于第二种方式来进行同步的。
同步思路:
- 由于源数据库和目标数据库属于异构关系,表结构不同,故需要使用Ogg提供的表结构定义工具将源数据库的表结构定义出来,提供给目标数据库解析。
- 数据同步存在数据初始化和数据增量同步。故此,在准备进行数据初始化时,需保证Ogg对源数据库的捕获进程为开启状态。这样,便可以实现源/目标数据库的数据一致性。
同步步骤:
- 源端sybase建立goldengate同步用户,需要权限 sa_role,replication_role;
- 在需要同步的库上,开启第二事务截断点;
假设需要同步的库是test,则使用isql进入sybase命令行后,执行
目的:ogg的捕获进程可以成功捕获到事务日志变化的保证;如果没有开启此选项,extract进程启动将会失败,各位可以试验一下。其实,如果没有开启此选项,当你使用ggsci进行添加附加日志的时候,ggsci也会提醒你没有开启某个库的第二事务截断点选项。 注意:这里的ltm选项可以说又爱又恨啊,为什么这么说呢,请看我另外一篇文章。 |
3.进入ggsci控制台,使用dblogin访问数据库,添加表级附加日志;
进入ggsci控制台后,使用命令: dblogin sourcedb 数据源,userid 用户名,password 密码 注意:因为gg是oracle的产品,所以其他的数据库需要使用odbc建立数据源,让oracle能访问到其数据库,如何建立数据源,可以去上度娘,这里就不做介绍了。 success后使用命令添加附加日志: add trandata test.test; (这里的test.test的意思是,对test库下的test表添加附加日志。) 成功添加的话,将会看到enable的相关信息,同时,如果这里没对同步库开启ltm选项的话,将会看到一条提醒,不过不用担心,你过会再去开启也行,反正在extract进程启动之前开启就行。 |
4.配置ogg针对源数据库(Sybase数据库)的捕获进程;
prm文件:
ggsci控制台:
启动extract进程:
如无意外,进程启动成功。如果这里启动失败的话,请使用命令,view report ext_test,查看错误报告,如果解决不了,可留下评论,博主看到会帮你解决。 |
5.源端配置、启动数据泵进程
目的:由于Ogg将捕获到的数据变化记录为自身定义的trail文件并存放于本地文件中,故需要使用数据泵进程将这些trail文件远程投递到目标机上。 ggsci控制台: edit params dp_test 参数文件配置:
如无意外,进程成功开启。这里要注意的一点是,准备投递过去的那台电脑,必须先安装好ogg,由于博主这里是使用同一台电脑,所以博主这里安装了两个Ogg,一个for sybase,一个for oracle,两个是不同端口的。 |
6.目标端配置、启动应用进程
目的:将源端投递过来的trail文件进行解密、分析,将源端的增量数据同步更新到目标数据库。 目标端ggsci: edit params rep_test 参数文件配置:
启动成功,即可在sybase端试试插入数据,更新数据,删除数据,是否会进行同步。 |