本文主要向大家介绍了Oracle数据库之Ogg: Sybase to Oracle个人,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助。
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命令行后,执行
use test
go
dbcc settrunc(ltm,valid)
go
目的: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文件:
EXTRACT ext_test --捕获进程名称
sourcedb test,userid sa,password 123456
EXTTRAIL dirdat/te
DISCARDFILE dirrpt/ext_test.dsc , APPEND
REPORTCOUNT EVERY 10000 RECORDS, RATE
GETTRUNCATES
table dbo.test; --声明需要捕获数据变化的表
ggsci控制台:
edit params ext_test(将会创建一个ext_test.prm的参数文件,将上述参数复制进该文件)
add extract ext_test,tranlog,begin now(创建extract进程)
add exttrail dirdat/te,extract ext_test,megabytes 100(创建exttrail,既抓取数据后记录到本地trail文件)
启动extract进程:
start ext_test
5.源端配置、启动数据泵进程
目的:由于Ogg将捕获到的数据变化记录为自身定义的trail文件并存放于本地文件中,故需要使用数据泵进程将这些trail文件远程投递到目标机上。
ggsci控制台:
edit params dp_test
参数文件配置:
EXTRACT dp_testsourcedb test,userid sa,password 123456RMTHOST 127.0.0.1(准备投递的远程主机Ip), MGRPORT 7810(远程主机mgr进程的端口号)RMTTRAIL D:\ogg112101_ggs_Windows_x86_ora11g_32bit\dirdat\dudiscardfile dirrpt/dumpdsc.dsc,append,megabytes 1024TABLE dbo.test;
add extract dp_test,exttrailsource dirdat/te(这里创建数据泵进程,trail源是刚刚捕获进程设置的trail路径)
add rmttrail D:\ogg112101_ggs_Windows_x86_ora11g_32bit\dirdat\du,extract dp_test,megabytes 100(这里创建rmttrail定义)
start dp_test
如无意外,进程成功开启。这里要注意的一点是,准备投递过去的那台电脑,必须先安装好ogg,由于博主这里是使用同一台电脑,所以博主这里安装了两个Ogg,一个for sybase,一个for oracle,两个是不同端口的。
6.目标端配置、启动应用进程
目的:将源端投递过来的trail文件进行解密、分析,将源端的增量数据同步更新到目标数据库。
目标端ggsci:
edit params rep_test
参数文件配置:
REPLICAT rep_testSOURCEDEFS dirdef/def_test.defUSERID ogg, PASSWORD 123456Discardfile dirrpt/rep_test.dsc,append,megabytes 1024REPERROR (DEFAULT, discard)Map dbo.test, TARGET ogg.TEST;
Dblogin userid ogg, password 123456(访问oracle数据库,目的是建checkpoint表)
Add checkpointtable ogg.chkpt_test(表名随意,有意义就行)
add replicat rep_test,exttrail dirdat/du,CHECKPOINTTABLE ogg.chkpt_test(这里的exttrail,是指源端投递过来的trail文件)
start rep_test
启动成功,即可在sybase端试试插入数据,更新数据,删除数据,是否会进行同步。
本文由职坐标整理并发布,希望对同学们学习Oracle有所帮助,更多内容请关注职坐标数据库Oracle数据库频道!