dataguard在高可用及容灾方面一般是dba的首选,毕竟dataguard在这方面存在压倒性的优势,不管是物理备用库(physical standby database)还是逻辑备用库(logical standby database),它们都具有一些共同的待征。
配置和管理方面的成本:dataguard比stream replication简单方便;
安全与稳定方面的成本:dataguard比stream replication稳定可靠。
对对于一个24x7的系统来说,这些是非常重要的,系统宕机时间的增加不仅影响着公司的形象,还会影响公司的效益;采用dataguard,数据的安全性相当有保障,物理备用库可以在最短的时间完成故障切换,逻辑备用库在保障数据安全的同时,也可以承担大量的报表等业务;由于dataguard的配置与管理比较简单,同理也降低了dba的工作强度;那什么情况下选择使用stream replication呢?
l 局部复制 stream可以只复制某些表或某些模式
l 异构环境 充分利用现有的设备与技术
l 远程容灾 stream对网络的要求较dataguard低
stream replication有灵活的复制策略,不仅可以配置只复制某些表,还可以配置仅复制某些表上的ddl或dml,相比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,也会出现一些莫明其妙的事情,所以最好做到良好的监控,预防可能存在的问题,问题一旦发生,能快速地解决问题。
高级复制与Streams Replication的原理是完全不同的,Streams Replication可以到表,用户,数据库级别,但高级复制似乎只能到表一级。
Streams Replication不是高级复制的升级版。
异构环境下,oracle的高可用和容灾有高级复制和stream 复制两种,两种的异同点如下:
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以后会的前景会非常广阔! 尤其是双向复制,解决了很多实际问题。
分享到:
相关推荐
Oracle提供了三种复制技术:**高级复制(Advanced Replication)**、**流复制(Streams Replication)**和**备库(Dataguard)**。备库主要用于灾难恢复,这里不作详细讨论。高级复制基于触发器实现,适合复制单个表...
Dubbo是一个高性能、轻量级的开源服务框架,它提供了一整套解决方案,包括服务发布、发现、调用、负载均衡、容错、限流等。Dubbo支持多种服务注册与发现方式,其中Zookeeper是最常用的一种。 **1.2 Dubbo工作原理**...
这本书涵盖了C++语言的核心库,包括STL(Standard Template Library,标准模板库)、输入/输出流、智能指针、异常处理、线程支持等关键部分,是学习和理解C++高级特性的必备资源。 C++标准库是C++编程语言的重要...
《Python标准库中文版》是Python开发者不可或缺的资源,它全面介绍了Python标准库中的各种模块,为编程者提供了丰富的工具箱,涵盖了从基础操作到高级功能的广泛领域。以下是对标题、描述及部分内容中提到的知识点的...
PostgreSQL 支持多种复制模式,包括流复制、逻辑复制和并行复制。这些机制可以实现数据冗余,提高系统的可用性和灾难恢复能力。 十、故障排查与日志管理 理解 PostgreSQL 的错误代码和日志记录方式对解决问题至关...
- **基于流复制的Keepalived**:通过自定义检测脚本来监控主库状态,以及自定义备库提升脚本来实现故障转移。需要注意的是,该方案需要考虑网络抖动的影响。 - **基于流复制的Repmgr**:提供了更高级的功能,如自动/...
- 控制流:学习if语句,switch语句,for, while等循环结构,以及break, continue的使用。 2. **函数与作用域** - 函数定义:function关键字创建函数,以及箭头函数的使用。 - 作用域:理解全局作用域和局部作用...
《SQL Server高级开发与专业应用》一书涵盖了SQL Server 2000的深度开发技术,这是一款由Microsoft公司推出的强大关系型数据库管理系统。在本文中,我们将深入探讨SQL Server 2000的核心功能、高级特性以及专业应用...
Apache Commons IO是一个Java库,提供了一些实用工具类来处理输入/输出流、文件、字符集、Swing组件、序列化以及更高级的功能。在 Commons IO 1.4 版本中,包含以下关键特性: 1. **文件操作**:提供创建、复制、...
5. **直播流复制**:工具会实时复制 Twitch 平台上的直播流,这意味着你需要保持程序运行直到直播结束,或者手动停止下载。这种实时复制可以确保你得到完整的直播内容,不会错过任何精彩瞬间。 6. **安装与使用**:...
2. **自动化宏命令**:可能预设了一些常用的工作流宏,用户只需点击一下,就能自动完成繁琐的复制、粘贴、格式调整等操作。 3. **数据透视表增强**:可能会提供更丰富的数据透视表选项,如自定义计算字段、多级筛选...
总的来说,理解和熟练运用C库函数是提升C语言编程能力的关键,而熟悉C++库则能帮助开发者更好地利用C++的高级特性,提高代码效率和可维护性。通过阅读C库函数手册,开发者可以深入理解每一个函数的工作原理,避免在...
Linux C编程主要涉及到的库包括标准C库(glibc)、数学库(math.h)、输入输出流库(stdio.h)、字符串处理库(string.h)、内存管理库(malloc.h)、时间日期库(time.h)等。这些库提供了大量的函数,使得C语言能够进行系统级...
8.3.5 创建和使用同义词库文件 223 第9章 管理SQL Server 2008的安全性 227 9.1 SQL Server 2008安全性概况 227 9.1.1 使用安全主体和安全对象 228 9.1.2 理解安全对象的权限 229 9.1.3 检查授予安全...
在备库读取方面,为了保持与主库的一致性,MongoDB采用批量写入Oplog的方式,但在这种模式下,备库可能会遇到读取阻塞的问题。为了解决这个问题,MongoDB引入了非阻塞备库读取,使得备库可以在不影响读取性能的同时...
C++ 标准库(也称为C++ Standard Template Library,STL)则更为丰富,除了C库的所有功能外,还引入了模板、容器、迭代器、算法等高级概念。关键组成部分包括: 1. 容器:如`std::vector`、`std::list`、`std::set`...
### MySQL 高级知识点解析 #### 一、MySQL 概述与架构介绍 **MySQL** 是一款非常流行的关系型数据库管理系统(RDBMS),最初由瑞典的 MySQL AB 公司开发,现隶属于 Oracle 公司。它以高性能、高可靠性和易用性著称...
通过以上概述,我们可以看到Python标准库的庞大和全面,几乎涵盖了所有现代编程可能遇到的需求,无论是基础的数学计算、文件操作,还是高级的网络编程、并发控制,Python标准库都提供了丰富的工具和模块,大大简化了...
Java高级技术路线1涵盖了许多关键领域,包括多线程、数据库、分布式系统和消息队列。以下是这些领域的详细概述: 1. **多线程**:在Java中,多线程是处理并发执行任务的关键技术。它允许多个任务在单个程序中同时...
7. **输入/输出流**:C++的`std::iostream`库提供了流的概念,用于输入和输出数据。`std::cin`用于从标准输入读取,`std::cout`用于向标准输出写入,`std::ifstream`和`std::ofstream`则用于文件操作。 8. **异常...