查看其它 1 个回答兔子工程师的回答

兔子工程师兔子工程师存储架构师高伟达

我举个例子,原有生产数据库系统oracle10g RAC的硬件平台采用的是HP Unix小型机和EMC 储设备,而新采购的硬件平台是IBM小型机和NetAPP存储设备。两套数据库系统的硬件平台属于不同厂商,属于异构架构,跨平台,跨操作系统将导致后面要实现的Oracle数据复制功能得到很大的受限,无法使用Oracle自带的DataGuard数据同步技术,同时由于我们生产数据库采用Oracle10g版本,在版本功能上也得到了一定限制。他无法在备库上同时实现数据时时同步和数据时时查询功能,当备库模式置为read only时,只符合我们要求的只读查询功能,但此时新同步到备库的日志中数据无法得到应用,数据无法写入库中,最新的数据无法查询到,所以不符合用户提出的数据时时同步,时时查询功能。
按照硬件平台不同厂商的性质和Oracle10g版本的功能限制,使用OracleGoldenGate数据同步软件实现数据时时同步,时时查询功能。可以时时查询功能。
Oracle GoldenGate软件是一种基于log(日志)的结构化数据复制软件,它通过解析源数据库在线log或归档log获得数据的增、删、改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。Oracle GoldenGate 软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒级的实时复制。
Oracle GoldenGate的数据复制过程如下:
a.利用捕捉进程(Capture Process)在源系统端读取Online Redo Log或Archive Log,然后进行解析,只提取其中数据的变化如增、删、改操作,并将相关信息转换为Oracle GoldenGate自定义的中间格式存放在队列文件中。再利用传送进程将队列文件通过TCP/IP传送到目标系统。捕捉进程在每次读完log中的数据变化并在数据传送到目标系统后,会写检查点,记录当前完成捕捉的log位置,检查点的存在可以使捕捉进程在中止并恢复后可从检查点位置继续复制;
b.目标系统接受数据变化并缓存到Oracle GoldenGate队列当中,队列为一系列临时存储数据变化的文件,等待投递进程读取数据。队列数据量一般只有log的四分之一左右;
c.Oracle GoldenGate投递进程从队列中读取数据变化并创建对应的SQL语句,通过数据库的本地接口执行,提交到数据库成功后更新自己的检查点,记录已经完成复制的位置,数据的复制过程最终完成。
由此可见,Oracle GoldenGate是一种基于软件的数据复制方式,它从数据库的log解析数据的变化。Oracle GoldenGate将数据变化转化为自己的格式,直接通过TCP/IP网络传输,无需依赖于数据库自身的传递方式,而且可以通过高达9:1的压缩率对数据进行压缩,可以大大降低带宽需求。在目标端,Oracle GoldenGate可以通过交易重组,分批加载等技术手段大大加快数据投递的速度和效率,降低目标系统的资源占用,可以在亚秒级实现大量数据的复制,并且目标端数据库是活动的。

IT咨询服务 · 2018-03-15
浏览2002

回答者

兔子工程师
存储架构师高伟达
擅长领域: 服务器存储灾备

兔子工程师 最近回答过的问题

回答状态

  • 发布时间:2018-03-15
  • 关注会员:3 人
  • 回答浏览:2002
  • X社区推广