执行概要
一般地说信息共享意味着用户和应用通过利用各种特殊目的的技术从他们的数据库中把信息取出来新的商业模式需要更统一的方案 人们可以自动发现相关信息并可以使之共享它应具有充分的灵活性以适应商业需求的变化同时最大程度地降低对特定目的技术的依赖我们所需要的是能够满足所有信息共享需求的一体化解决方案
在Oraclei 数据库第二版中Oracle引进了一个全新的一体化信息共享功能Oracle 流(Oracle Streams)Oracle流通过一个单一的解决方案满足了大部分的数据移动事物处理传播以及事件管理的需要它为建立和运转分布式企业和应用数据仓库和高可用性解决方案提供了必要的能力开发人员和数据库管理员可以同时使用Oracle流的所有能力如果他们的需求发生了变化他们可以简单地启用Oracle流的一个新功能而不必放弃现有的功能
简介
任何数据库管理系统的一个重要功能是在多个数据库和应用间共享信息的功能传统地说这意味着用户和应用将利用各种特定的技术从数据库中将信息取出来今天新的功效和商业模式需要更全面和自动的解决方案这种方案必须能自动地决定相关的信息并把这些信息共享于需要它的群体之间它也必须是一种能够适应商业需求的变化同时最大程度地减低对单一目的解决方案依赖的通用解决方案这种积极地信息共享包括在数据库中捕获和管理事件和事物处理包括但不限于DML然后将这些事件传递到其他数据库和应用信息共享对数据和应用集成复制装载数据仓库高可用性数据保护以及其他应用是非常重要的但是信息共享选择的多样性可能极为丰富一些解决方案是专门用于不同目的的它们可能不能与其他的选择相互兼容IT部门发现没有一种解决方案可以满足所有的需求并且担心当他们的需求产生变化时会受到他们所采用的解决方案的限制他们希望能有一种解决方案可以满足信息共享的所有要求
Oraclei 数据库提供了大量的信息共享特性包括高级队列高级复制变更数据同期捕获和数据卫士这些特性提供了具有针对性的交错能力并且基于不同的底层技术在Oraclei 数据库第二版中Oracle 提供了一套全面的基于信息集成共享特性的Oracle 流Oracle 流可以使整个应用提升到一个新的层次最突出的是Oracle 流可以通过一个单一的解决方案满足大部分数据移动事物处理传递以及事件管理的要求当需求产生了变化Oracle 流将能适应并满足新的需求
Oracle流概要
Oracle流可以使一个数据库中的数据事物处理和事件在本数据库内部传递也可以使它们从一个数据库传递到另一个数据库中流可以将被发布的信息传递到订阅它的目的地因此这是一个全新的特性与传统解决方案相比它在捕获和管理事件与其他数据库和应用共享事件等方面提供了更卓越的功能性它可以使IT部门打破各解决方案之间交互使用的循环Oracle流为建立和运转分布式企业和应用数据仓库和高可用性解决方案提供了必要的能力开发人员和数据库管理员可以同时使用Oracle流的所有能力如果他们的要求发生了变化他们可以简单地启用Oracle流的一个新功能而不必放弃现有的功能
Oracle流提供了一系列的元素通过利用这些元素用户可以控制哪些信息可以放入流中流应如何流动或通过哪些途径从一个节点流向另一个节点当流中的事件流向每个节点时它们发生了哪些变化以及流如何终止等问题通过指定作用于流上的元素的配置用户可以强调出特定的要求为了简化Oracle流的部署Oracle提供了为特定市场所特别配置的应用
Oracle流的架构是非常灵活的如上图所示流包含三个基本元素
捕获
存储
消费
捕获
Oracle流支持捕获事件(数据库变化和应用生成的信息)并存入存储区域这些事件可以通过两种方式捕获对于隐式捕获服务器在一个源数据库中捕获DML和DDL显式捕获则允许应用明确地生成事件并将其放入存储区域
Oracle流的显着特征之一是支持基于日志的变更捕获从重做日志文件中直接捕获变更可以使源系统的间接费减低到最少基于日志的捕获使得表的变更可以被存入日志文件从而可以保证当发生损害或媒体故障时的可恢复性Oraclei数据库可以读分析和解释重复操作信息这些信息当中可能包括数据库活动历史的信息Oraclei 数据库第二版可以挖掘信息并将变更数据传递到捕获过程数据库提供了辅助的日志记录功能它可以将附加信息如主键列记录到重做流中以有助于这些信息的传递捕获处理首先捕获从重做日志中提取出来的变更数据将其格式化为逻辑变更记录(LCR)的格式然后将其放入存储区中以备进一步地使用捕获处理可以基于定义好的规则智能化地过滤LCR从而可仅使所需对象的变更被捕获
Oracle流除支持对存档日志文件的挖掘还支持对在线重做日志的热挖掘在热挖掘的情况下重流在变更数据被写入的同时就被热挖掘从而减少了捕获的延迟
用户应用可以显式地将信息表现事件加入到存储区域这些信息可以作为LCR进行格式化这将使得它们可以被应用引擎所消费它们也可以被格式化为可被其他用户应用通过利用显式出列所消费的格式用户应用也可以将信息加入到队列表中它可以被应用处理所捕获并作为LCR在存储区域中发布
存储
事件一旦被捕获就将被放入存储区域存储区域是一个队列它可为存储和管理捕获事件提供服务数据库表的变更将被格式化为LCR然后被存储于存储区直到有订阅者消费它们LCR存储提供了一个安全的保留场所并能完成对LCR数据的审核和跟蹤
订阅者检验存储区域的内容以决定他们是否对表现该事件的信息有兴趣订阅者可以是一个用户应用通常是位于另一个系统中的其他存储区域或缺省应用处理订阅者可以Oracle 流有选择的评价一系列的规则以决定这些信息是否满足订阅时所制定的基准如果满足基准这些信息将被订阅者消费
如果订阅者是用户应用该应用将把信息从存储区域提取出来以便于消费该信息如果订阅者是另一个存储区域该信息将被传递到该存储区域如果订阅者是一个缺省应用处理它也将被提取出来被该应用处理所消费
传递
存储区域中的事件也可被传递到相同数据库中的其他存储区域或其他远程数据库中的存储区域为了简化网络路径和减少WAN通讯量事件并不需要被发送到所有数据库和应用中去相反它们可以被直接传递到位于一个或多个系统中的存储区域中直到到达订阅它们的系统并不是所有的需要订阅事件这样可以为特定系统决定利用哪些事件提高灵活性一个单一的存储区域可以存储来源于多个数据库的事件这样可以简化安装和配置
转换
转换是指一个对象在参与捕获和应用过程中形式的变化或它所保有的数据的变化等转换可能包括在特定站点的某个表的特定列中数据类型的变化只在一个站点的某个表中追加一列或在特定站点的某个表中包含一个数据子集
转换可以用PL/SQL 功能表示它输入源数据类型并返回该对象的目标数据类型转换可以在信息入列时被指定即当信息被插入到存储区域之前就被转换为正确的类型它也可被指定于传递这将有助于数据子集向远程站点的传递最后它也可被指定于出列或本地应用这将有助于按照指定站点的方式格式化信息
消费
存储区域的信息可以被应用引擎所消费它们所表示的变化将被应用于数据库或它们将被应用所消费Oracle流包括一个灵活的应用引擎它允许使用一个标准的或定制的应用功能因此数据在需要时可以被转换对于显式出列的支持允许应用开发人员使用Oracle流通知应用数据的变化也可以充分利用Oracle流的变化捕获和传递能力
缺省应用
缺省应用引擎使用DML变化DDL变化和用户指定的LCR如果目标数据库是Oracle数据库应用引擎将在Oracle数据库所在系统的本地运行
如果目标行已被改变但没有包含所期待的数据值缺省应用引擎将会检测出这种沖突如果检测出沖突将会启动一个解决程序
应用引擎由一个应用协调器一个获取受控和一个或多个应用受控组成获取受控负责组合由Oracle生成的LCR的事务处理应用协调器执行事务处理从属性和DML层级从属性计划以捕获最大化并行性
由于应用协调器和应用受控一般位于相同的Oracle事例中因此在从属性计划中不会有网络往复产生应用引擎可以激活用户指定功能以采用变化
用户定义的功能应用
应用引擎可以将LCR传递到用户定义的功能中去它为处理LCR提供了极大的灵活性一个典型的用户定义功能是在把LCR所表示的数据应用到本地表之前预先对数据进行再格式化例如映射事务处理的字段格式对象名和列名等用户定义功能也可被用于执行行子集或用来更新在源数据库中没有出现的对象
显式出列
用户应用可以使LCR或其他信息从接收的存储区域显式出列这可以使用户应用更有效地访问流存储区域中的数据流可以向注册的PL/SQL或OCI功能发送通知为应用提供一个可选方案以获取新的信息当然为使存储区域中新订阅的信息可有效利用应用仍然可以捕获甚至等待
网络指向
管理员在指定流的路径上具有很大的灵活性通过使用存储区域队列的基于规则的发行和订阅能力他们可以选择哪些变化将被传递到每一个目的数据库中并能指定达到目的地的路径信息例如一个事件可以通过一个并没有实际应用该事件的集线器数据库来传递
区分起源于不同站点的变化是非常重要的数