以下是个人对于oracle Actiive DataGuard和 GoldenGate的一些理解,限于使用场景和经验的不同,可能不会非常的全面,如有其它不同的想法,欢迎讨论调整补充。
首先从容灾方向来看,个人认为ADG产品更加倾向于结构和数据层面的容灾,是为了保证整个数据库(实例)系统的完整性而设计的,主要目的是为了高可用性(HA);可以说,dataguard是一套数据库系统体系内的容灾解决方案,ADG是在容灾的基础上,加入了可查询的功能,从而能够将一些报表类的业务压力从主库上分离出去,其根本上,还是在一套数据库范围内变相的增加该数据库系统的处理能力。OGG产品,对数据同步的能力支持的更多,它的同步是表级的,不支持在源或目标端的数据聚合操作,如sum,average,count等的数据复制,另外OGG对于DDL复制支持的限制较大,作为容灾,在稳定性和配置上都不如ADG。
从使用场景角度来看,ADG支持一对多的同步,但仅限于一套数据库系统内,无法满足多套数据库之间的有效关联。而OGG产品因为其同步方式的灵活性,可以完美的实在多个数据库之间的互动,OGG支持单向复制、双向复制、点对点复制、数据分发、数据集中、多级复制等多种使用场景,针对表的复制还支持单表到单表、单表到多表、多表到多表、多表到单表、表过滤等多种复制方式,而且OGG可以最大限度的支持异构(操作系统,数据库版本,数据库产品),从而满足复杂业务系统的要求。
从维护和稳定性角度来看,ADG产品维护起来简单,极少出现错误;OGG产品在维护起来操作较为复杂;而且,ADG产品的debug属于oracle体系,在问题处理上,oracle的支持的更好,OGG产品是被oracle收购的,所以在debug方面,对于问题定位和分析都不同于oracle。
下面是一个简单的对比表格
|
Oracle DataGuard |
Oracle GoldenGate |
原理 |
复制归档日志或在线日志 |
抽取在线日志中的数据变化,转换为GGS自定义的数据格式存放在本地队列或远端队列中 |
稳定性 |
作为灾备的稳定性极高 |
稳定性不如DataGuard |
维护 |
维护简单,极少出现问题 |
命令行方式,维护较复杂 |
对象支持 |
完全支持 |
部分对象需手工创建于维护 |
备份端可用性 |
备份端处于恢复或只读状态 |
两端数据库是活动的,备份端可以提供实时的数据查询及报表业务等,从而提高系统整体的业务处理能力,充分利用备份端的计算能力,提升系统整体业务处理性能。可以实现两端数据的同时写入 |
接管时间 |
接管时间很短 |
可实现立即接管 |
复制方式 |
可以实现实时复制 |
GoldenGate可以提供秒一级的大量数据实时捕捉和投递,异步复制方式,无法实现同步复制 |
资源占用 |
复制通过数据库的LGWR进程或ARCN进程完成,占用数据库少量资源 |
业务高峰时在数据抽取转换时消耗系统资源较多,低峰时占用较小 |
异构数据库支持 |
单一数据库解决方案,仅运行在Oracle数据库上,源端和目标端操作系统要求较严格,版本号可以不同 |
可以在不同类型和版本的数据库之间进行数据复制。如ORACLE,DB2,SYBASE,SQLSERVER,INFORMIX、Teradata等。适用于不同操作系统如windows、linux、unix、aix等 |
带宽占用 |
使用OracleNet传输日志,可通过高级压缩选项进行压缩,压缩比在2-3倍 |
利用TCP/IP传输数据变化,集成数据压缩,提供理论可达到9:1压缩比的数据压缩特性 |
拓扑结构 |
可以实现一对多模式 |
可以实现一对一、一对多、多对一、双向复制等多种拓扑结构 |