ORACLE流复制

ORACLE流复制
Author: Rainny
Date:2009-5-3


ORACLE流复制 (Stream Replication)9I以后推出的 ,在银行 ,电信等大型系统中应用广泛 .相对于 ORACLE前期的复制技术 ,流复制是新推出的技术 ,存在一些 BUG,但它是 ORACLE未来数据同步的趋势 .原因如下 :
(1)相当于实体化视图和高级复制 ,流复制对于 PRIMARY数据库性能的影响更小
(2)流复制相对于高级复制来讲 ,所需的硬件成本要小
(3)流复制更加灵活 ,支持异构数据库对象的同步

数据同步一直是数据库技术中投资成本比较大 ,维护难度大的一点 .我们拿生活中的例子来说 ,最活生生的实例就是银行系统 .我们知道 ,银行系统的数据量非常大 ,所以 ,在全国 ,任何银行都有很多数据中心 ,哪怕是一个省一个数据中心 (像北京 ,上海 ,广州 ,深圳等这样的一线的大城市一个市需要一个数据中心 ),中国大陆就会有 31个数据中心 .最理想的状况是只有一个数据中心 ,这样就不存在同步的问题 ,可是 ,这在现实中不允许 ,由于数据量大 ,如果只使用一个数据库 ,性能无法承受 .银行系统需要同步 ,你比如 ,最简单的例子 ,我们跨省存取款 ,或跨行存取款 ,各个数据中心之间就需要同步来进行结算 ,所以 ,银行要购置大量的昂贵设备来进行这样的数据同步 .银行为什么要对异地存取款收取手续费 ,原因就在此 .同样 ,银行之所以要对借记卡收取年费 ,原因也在于成本 ,对于一个银行帐户 ,即使你很少交易,可是银行要维护这些帐户数据 ,所以需要在硬件存储 ,人力技术上花大量的金钱.大型跨国公司的IT系统和银行的例子类似.另外一个生活中的例子就是电信的系统 ,全国的手机用户这么多 ,而电信和移动需要提供的服务又这么多 ,刚就话费的管理和结算 ,电信公司就要花很多的成本来维护很多省公司的数据中心 ,而各个数据中心的数据同步 ,更需要投很多的钱 .
我们来回顾一下 ORACLE数据同步的技术 .数据同步和复制的概念其实是重叠的 ,数据复制 ,一大部分原因是为了同步 .
(1)DATAGUARD:物理 STANDBY本质是日志传输和应用重做 (介质恢复 ),逻辑 STANDBY本质上是日志挖掘( log miner
(2)实体化视图 :ORACLE早期的版本称为快照 (SNAPSHOT),通过实体化日志捕获主表的变化 ,然后通过刷新机制传送到另一端 .
(3)高级复制 :分两种 :多主体双向同步和实体化视图复制 .多主体实时双向同步本质上是触发器加队列 (TRIGGER+QUEUE),对硬件要求比较高 ,对主数据库的性能也影响也比较大
(4)流复制 :本质上是日志挖掘 (通过 LOG MINER捕获主数据库的逻辑变化记录 LCRs,通过传播,转换成 SQL应用到复制的另一端 )加队列 .原理上和逻辑 STANDBY相似 .只不过逻辑 STANDBY是整个数据库的复制 ,而流复制可以是单个数据库对象的复制 ,所以比逻辑 STANDBY更加灵活 ,所以支技异构数据库对象的同步 .ORACLE 10G对流复制进行了增强 ,通过实时的日志挖掘 ,流复制的性能提升不少 .
Oracle Streams enables information sharing. Using Oracle Streams, each unit of shared information is called a message, and you can share these messages in a stream. The stream can propagate information within a database or from one database to another. The stream routes specified information to specified destinations. The result is a feature that provides greater functionality and flexibility than traditional solutions for capturing and managing messages, and sharing the messages with other databases and applications. Streams provides the capabilities needed to build and operate distributed enterprises and applications, data warehouses, and high availability solutions. You can use all of the capabilities of Oracle Streams at the same time. If your needs change, then you can implement a new capability of Streams without sacrificing existing capabilities.
Using Oracle Streams, you control what information is put into a stream, how the stream flows or is routed from database to database, what happens to messages in the stream as they flow into each database, and how the stream terminates. By configuring specific capabilities of Streams, you can address specific requirements. Based on your specifications, Streams can capture, stage, and manage messages in the database automatically, including, but not limited to, data manipulation language (DML) changes and data definition language (DDL) changes. You can also put user-defined messages into a stream, and Streams can propagate the information to other databases or applications automatically. When messages reach a destination, Streams can consume them based on your specifications.
  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

复制,顾名思义就是将数据库中的数据拷贝到不同物理地点的数据库中。 在很多生产环境中,经常遇到一些大量得数据,这些数据只用作查询统计功能。例如:历史告警,历史性能指标,历史事件,等等。这种数据的特点是:只读不写,数据量相当大,一旦查询大结果集的数据时,对数据库的IO,内存缓存占用相当大,会严重影响同一个数据库的其他会话的操作,表现为整个数据库反应迟缓,业务功能不可用。采用复制技术后,将这些大型数据复制到另外一个数据库中,对这些大数据的查询统计操作放在另外的一台数据库服务器上进行,即使受影响,也只是影响局部的查询统计功能,其他正常的业务处理不受影响。 但是,使用复制技术的话,意味着一个系统中,至少存在两个数据库(集群的数据库也当成一个数据库),对应的应用程序也需要建立多个数据库连接,能够根据业务需要,访问不同的数据库ORACLE数据库自身提供有复制功能,只需要进行配置即可实现。 ORACLE提供有三种复制技术: 高级复制(Advanced Replication) 复制Streams Replication) 备库(Dataguard) 备库的方式,就是数据库数据库的备份方式,主要是解决容灾的,不讨论此话题。 复制主要是利用ORACLE的归档日志,进行增量备份来实现的,不仅可以配置只复制某些表,还可以配置仅复制某些表上的ddl或dml。可以复制到表,用户,数据库级别。 高级复制主要是基于触发器的原理来触发数据同步的,因此,高级复制无法实现用户,数据库级别的对象复制,只能做些表、索引和存储过程的复制。 如果出于容灾整个数据库的考虑,高级复制相当复杂,而且并不一定能做好,复制的配置相对简单。复制是后来产生的复制技术,是基于日志挖掘技术实现的,对数据库的影响较低。但在稳定性方面较差,实时性没有高级复制强(因为高级复制是基于触发器的)。如果系统意外的话,复制的恢复将会需要较长时间,特别是意外时间越长,恢复时间成倍增长。 下面使用相同的环境,分别对两种复制功能进行配置介绍,并进行性能压力测试比较。
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值