Streams概述

Streams概述  
Oracle Streams使信息共享化。每一条共享的信息在Oracle Streams中都被称为一条消息。Stream能在同一个数据库内部或者不同数据库之间传递消息,并且能根据路由配置将指定的消息传递到指定的目的地。它在捕获消息,管理消息,以及在不同数据库或应用程序之间共享消息等方面提供了比传统解决方案更为强大的功能和扩展性,并且提供了分布式企业级应用、数据仓库、高有效性解决方案等功能。我们可以同时使用Oracle Streams提供的所有功能。当需求变更时,我们可以实现新的功能,而不影响现有的功能。 
通过Oracle Streams,我们能够掌控诸如:将哪些信息放入stream中,数据库之间消息的流向,消息传递到数据库时做何处理,何时关闭stream等等。根据我们自己制定的规范,Streams能够在数据库中自动的捕获、储存和管理因DML、DDL等操作产生的消息。我们可以向stream中放入自定义的消息,Streams能够自动的将消息传递到其他数据库或者应用程序。根据用户定义的规范,Streams将决定如何处理传递到目的地的消息。 

Streams能做什么?  

捕获数据库消息  
      捕获进程(capture process)能够捕获到table、schema、甚至整个数据库的变更。这些变更都会记录到数据库重做日志中,捕获进程从重做日志中捕获到这些变更并将其格式化为LCR(logical change record , 逻辑变更记录)。哪些消息将被捕获由规则确定,这些消息被称为Captured messages。 
      产生消息的重做日志所在的数据库被称为源数据库。捕获进程能捕获到本地源数据库或是远程数据库的变更,并将LCR放入相应的队列(Queue),这种方式常被称为隐式捕获。 
      用户或应用程序可以手动的将LCR或用户自定义的消息放入队列,这种方式常被称为显式捕获。 

储存消息到队列  
捕获进程将消息放入ANYDATA队列,ANYDATA队列能存放不同类型消息。用户和应用程序同样可以将消息放入ANYDATA队列,也可以放入指定类型的队列,指定类型的队列只能存放同类型的消息。 

队列间的消息传递  
Streams propagations能够将消息从一个队列传递到另一个队列,这些队列可以在同一个数据库中,也可以在不同数据库中。传递哪些消息同样由规则确定。 

消费消息  
当消息从队列中出队时将被消费。应用过程(apply process)隐式的将消息出队,而用户、应用程序或是消息客户端显式的将消息出队。消费消息的数据库被称为目标数据库(destination database),目标数据库和源数据库可以是同一个。 


Streams有什么用? 

消息队列
 
Oracle Streams 高级队列(AQ)使用户程序能将消息入队,传递到目的地,并且在目标数据库中将消息出队。AQ可设置为只能存储单一类型的消息,也可设置为可存储ANYDATA类型的消息,绝大部分的消息类型都可包装为ANYDATA类型以存储到ANYDATA队列。AQ遵循消息队列系统规范,诸如:点对点模式,订阅/发布模式,路由功能,广域网消息传播,消息转换,以及消息网关等。 
在数据库中创建队列后,应用程序显式的将消息放入队列,订阅程序或消息客户端可以立即接收到该消息。若想在远程订阅源数据库中发布的消息,可在远程数据库中创建一个队列,通过队列间的消息传递交互信息,远端程序便可使用本地队列接收到消息。另外,远端程序也可通过各种标准协议直接从源数据库队列中接收到消息。 

数据复制  
Streams能够捕获到数据库中因DML和DDL操作引起的数据变更,并可将这些数据变更复制到其他数据库中。Streams 捕获进程捕获到源数据库中的数据变更并将这些信息格式化为LCR,通过AQ传递到目标数据库。 
目标数据库接收到数据变更消息后,可以对自身数据做出同样的DML或DDL操作,这样便可实现多个数据库之间的数据复制。即使彼此间表结构和数据都不同,也可完成同样的功能。 

事件管理和通知  
应用程序能将事件描述包装为消息并显式的放入队列,而Streams 捕获进程能捕获到数据库DML或DDL事件并将其转化为LCR。Propagations 通过各种队列将消息传播到目的地,最后,用户程序或应用过程将消息出队。若必要的话,应用过程可以将出队的消息再次入队。 
通过配置,我们能指定当消息被消费后仍然驻留在队列中的时间。 
Streams 捕获进程、Propagations(传播)、应用过程、消息客户端都是基于规则的。Oracle中内置有规则引擎以计算何种事件将被捕获并传播。当捕获进程根据规则捕获到事件,将事件描述包装为消息并放入队列,消息客户端或应用程序接收到消息后,可以通过发送email或是发送短信通知客户。 

数据保护  
要想保护数据,创建一个备份数据库是常见的解决方案。一旦发生人为或自然因素引起的灾难性后果,使用备份数据库能很快的恢复数据。Streams为此提供了高扩展性、高可用性的功能。 
此外,我们还可以使用与Streams采用同一架构的Oracle Data Guard,创建并维护与生产环境数据库相同的备份数据库。通过LCR的交互使备份数据库始终与生产环境数据库保持一致,并且备份数据库对外开放读写权限,这就使得备份数据库成为生产环境数据库的有力补充。 

数据库升级和维护  
通过Oracle Streams,我们只需使数据库关闭极短时间甚至不需关闭,便可完成数据库的升级和维护操作。维护操作包括将数据库移植到其他平台,改变数据库的字符集,修改schema信息,给Oracle打补丁等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值