Decode360's Blog

业精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

  BlogJava :: 首页 :: 新随笔 :: 联系 ::  :: 管理 ::
  397 随笔 :: 33 文章 :: 29 评论 :: 0 Trackbacks
高级复制、流复制、备库的区别
 
 
    公司目前需要做一个与生产库实时同步的备库,于是做了一些技术选择。基本上来说,最省事的当然就是做个DG,但是对系统硬件、操作系统的要求比较高,不可能再弄台小机搞这玩意。所以只能排除。另外物化视图也是比较方便的方法,但是因为是需要整库备份,很明显是不切实际的。基本上可选的技术也只有高级复制和流复制两种了。流复制的配置比较麻烦,而且应用也不是很成熟,但是功能强大。高级复制虽然要简单一些,但是也只能支持Table级,所以在两者之间还是很困惑,专门找了一些材料对比一下。
 
    高级复制(Advanced Replication)
    流复制(Streams Replication)
    备库(DataGuard)
 
    DataGuard在高可用及容灾方面一般是dba的首选,毕竟DataGuard在这方面存在压倒性的优势,不管是物理备用库(physical standby database)还是逻辑备用库(logical standby database),它们都具有一些共同的待征。
 
    配置和管理方面的成本:DataGuard比Stream Replication简单方便;安全与稳定方面的成本:DataGuard比Stream Replication稳定可靠。
 
    对对于一个24x7的系统来说,这些是非常重要的,系统宕机时间的增加不仅影响着公司的形象,还会影响公司的效益;采用DataGuard,数据的安全性相当有保障,物理备用库可以在最短的时间完成故障切换,逻辑备用库在保障数据安全的同时,也可以承担大量的报表等业务;由于DataGuard的配置与管理比较简单,同理也降低了dba的工作强度;那什么情况下选择使用Stream Replication呢?
 
    1、局部复制 Stream可以只复制某些表或某些模式
    2、异构环境 充分利用现有的设备与技术
    3、远程容灾 Stream对网络的要求较DataGuard低
 
    Stream Replication有灵活的复制策略,不仅可以配置只复制某些表,还可以配置仅复制某些表上的DDLDML,相比DataGuard必须整个数据库复制而言,可以节省相当的存储投资,毕竟对于某些海量数据而言,有许多是不必要复制的。
 
    如果在异构环境,即不同的操作系统,那DataGuard将会束手无策,非Stream Replication莫属,这样可以充分利用现有的环境,配置高用可方案在异构环境,Stream Replication将会是Advanced Replication的强劲对手。
 
    Stream Replication传播的是经过logmnr挖掘并包装的逻辑改变记录(LCRs),相比DataGuard传送archived redo log、Advanced Replication的mview log与MView刷新的方式,Stream Replication对网络的需求降低了很多,在远程异地容灾的过程中,租用网络带宽是一笔较高的费用,Stream Replication可以适当地降低这笔费用。
 
    Advanced Replication相对于DataGuard,缺点是:配置与管理较复杂、安全与稳定性不够;优点:局部复制、异构环境等。Advanced Replication是一种相当成熟的技术,在许多关键系统中得到成功的运用,相对于9iR2推出的Stream Replication而言,双方适用的环境虽然相当,比如都可以进行局部复制、异构复制、远程容灾等,Advanced Replication目前在稳定性与安全性方面更经得起考验。
 
    对比Stream Replication与Advanced Replication底层的实现技术,Stream Replication在实时性、稳定性、高效率、低消耗(较少的cpu/network资源)等方面更有优势,但凡一些新推出的功能,都或多或少存在一些不确定的因素。
 
    在10gR1中,Oracle针对目前Stream Replication存在的弱点进行了增强,不仅提供了从Advanced Replication迁移到Stream Replication的脚本,还提供了Stream Replication的配置与监控工具,Stream Replication在配置与管理方面必将智能化、简单化,担负起与shareplex争夺企业数据复制市场的重任。
 
    综上所述,Oracle在数据复制方面,DataGuard、Advanced Replication、Stream Replication都有自己的特点及独到的地方,做为DBA,用什么样的方案取决于目前的设备环境、业务需求、将来的发展趋势以及已经成熟的技术。当然,对于已经选择的数据复制方案,技术上必须有一定的掌握;毕竟所有的方案都不是没有问题的,即使目前较安全、稳定、便于管理的DataGuard,也会出现一些莫明其妙的事情,所以最好做到良好的监控,预防可能存在的问题,问题一旦发生,能快速地解决问题。
 
    Advanced Replication与Streams Replication的原理是完全不同的,Streams Replication可以到表、用户、数据库级别,但高级复制似乎只能到表一级。
 
    注意:Streams Replication不是高级复制的升级版。
 
 
------------------------------------------------
    异构环境下,Oracle的高可用和容灾有Advanced Replication和Streams Replication两种,两种的异同点如下:
 
    1.高级复制是基于触发器(trigger)原理,而Stream是基于日志挖掘原理,因此Stream复制对源数据库的性能影响更小,但实时性不如高级复制。
    2.高级复制复制的对象是基于数据库目标(Object)的,如表、索引和存储过程,而Stream复制可以针对表、方案(schema)和整个数据库,因此如果出于容灾整个数据库的考虑,Stream复制的配置相对简单。
    3.高级复制是一种相当成熟的技术,在许多关键系统中得到成功的运用,相对于9iR2推出的Stream复制,高级复制目前在稳定性与安全性方面更经得起考验。
    4.从发展的角度看,流的应用会越来越多,从Oracle10g开始,Oracle公司提供了从高级复制向流复制移植的工具。可以看出,Oracle公司会更偏重于基于流的新技术。
    5.由于高级复制是基于触发器的,因此所有的复制对象结构(DDL)的改变,都必须通过Oracle提供的复制包来实施,和应用结合的比较紧,更适合于开发者使用,而流复制则更适合DBA来实施。
 
    两种都用了一段时间了,实际使用来看,Streams复制需要更少的带宽,2m带宽,如果Streams复制不行,高级复制大概更没戏,但是用Streams最好别网络断线时间过长,不知道是bug还是Oracle没考虑这种情况,如果复制停顿一段时间,再恢复正常,大概是队列表中消息太多了,入队出队都很慢,非线性增长啊,这样就需要不短的一段时间来同步数据,高级复制就没这种状况。
 
    BUG:反正10.2.0.1有一些,看你碰的到碰不到了,严重的能让你删掉队列表重建才行,意味着基本是重建整个复制了,不过想重复一下又不出现了;还有使用negative rule如果站点多了遇到大的更新事务速度就变得极慢,站点多了要先设计好结构;会不停在有apply进程的站点udump目录下生成trc文件,虽然还算不上很成熟,不过Streams复制真是好东西,以后必定会取代高级复制,建议打10.2.0.3补丁,据说修正了不少bug。
 
    Stream对系统的设计与维护方要有相当的对Stream技术的把控能力,而大多数系分与DBA对这个东西都没有经验,所以难以推广;DataGuard胜在维护简单可靠,一般DBA都可以维护。Stream以后会的前景会非常广阔! 尤其是双向复制,解决了很多实际问题。
 
 
posted on 2009-06-30 22:54 decode360 阅读(632) 评论(0)  编辑  收藏 所属分类: 07.Oracle

只有注册用户登录后才能发表评论。


网站导航: