前 言 当越来越多的业务因为各种原因而使用分布式环境时,对数据复制的需求就会稳步增长。对这种数据的实时访问已成为在全球市场上竞争的必备条件之一。在这些环境下,全局数据完整性和一致性同等重要。Oracle Streams可以处理这些需求。 Oracle公司在Oracle 9i Database Release 2版本中引入了Streams,作为分布式环境中在多个应用程序和数据库中进行数据复制和信息共享的旗舰解决方案。Oracle Streams提供了一个精密、灵活并且健壮的基础设施,可以满足各种不同的数据复制需求。Oracle Streams相对传统数据复制解决方案更加灵活的特性,允许用户选择单个的可以更快部署并且开销更少的信息共享解决方案。 Streams是Oracle数据库的一个整合部分,不需要单独为其授权或者安装任何额外的软件。 Oracle Streams中可用的一些很强大的特性和选项包括: ●准实时复制 ●数据完整性(遵循事务边界) ●自动冲突处理 ●数据转换 ●从单源向多目标复制 ●点对点复制 ●复制环境的详细监控 ●扩展的规则管理 ●灵活的配置选项和一些配置方法 在早期的Oracle发布版本中,配置和管理Oracle Streams环境有些复杂。Oracle Database 10g R2中的一些改进使得实现、监控和管理Streams变得很简单。Oracle Database 11g R2在此基础上进一步做了改进。随着核心Streams代码的提升,复制性能得到大幅提高。同时,管理复杂的Streams环境也变得非常容易。 虽然自Oracle 9i Database Release 2之后Oracle Streams产品就可用,但是一直缺乏全面的文献资料。对于一个实际的DBA,没有哪个单一的学习资料能仔细讲解配置Streams环境的方法或是监控及故障解决问题。对于架构师,也会因为缺乏类似的确切信息而阻止他们在自己的设计中使用Streams。本书试图通过解释产品背后的概念来填补这个空白。从配置到调试Streams环境,本书都将提供实践建议。正因为如此,本书作为Streams复制的一个参考资料,适用于DBA、开发人员和架构师阅读。 本书内容安排 本书针对不同类型读者的需求,从不同的方面介绍Streams。架构师、开发人员和DBA将学习概念并且很好地理解各种Streams组件。同时,DBA还将得益于所有的实用脚本和一步一步的说明。 很少人能够一次从头到尾地将一本技术书籍读完。但是,我强烈要求所有的读者一开始就阅读前两章,从而在概念上很好地理解Streams。然后,可以跳到任何一章去阅读关于某个特定Streams组件的知识或者学习在Streams中执行某个特定任务的方法。例如,一个实际的DBA要想设置一个有效的Streams环境,他可以直接跳到第8章并且一步一步地按照说明来设置Streams。或者,由于Oracle Enterprise Manager Grid Control 10.2.0.5让这个任务变得更加容易,DBA可能想要查看第14章。欲了解更多关于应用进程组件知识的读者可以参阅第6章。所有的读者都将从第3章详细了解到Oracle Streams环境中使用规则的方法。 本书共包括14章和5个附录,内容如下: 第1章:Oracle Streams的概念 本章介绍Oracle Streams复制,讨论Streams架构并且简要解释它的各个组件。读者应该阅读本章以熟悉Oracle Streams的架构和组件。 第2章:使用Oracle Streams 本章讨论配置Streams复制的方法以支持复制数据的各个不同需求,另外还讨论了使用Streams技术解决其他不一定需要数据复制的业务问题的方法。 第3章:Streams规则和规则集 Oracle Streams使用规则和规则集,这些规则和规则集控制数据捕获和复制的方法。本章介绍这些规则以及Streams使用它们的方法。当自定义一个涉及数据转换的Streams环境时,需要理解规则。可以等到有一个有效的Streams环境之后再回头学习这一章,以熟悉规则和规则集的工作方式。 第4章:捕获进程 本章详细讨论Streams如何捕获复制发生的变化、捕获进程的类型、捕获进程组件以及捕获进程的配置、需求和限制,另外还解释了在不同Streams环境中创建捕获进程的方法。 第5章:暂存进程与传播进程 本章介绍队列及其使用方法以及Streams使用它们传播所捕获消息的过程,另外还介绍传播的概念以及创建它来支持各种Streams环境的方法。 第6章:应用进程 本章详细讨论Streams将修改应用到目标表的方法以及应用进程的组件、需求和限制,另外还讨论了创建应用进程及各种与之相关的在数据应用之前用来处理错误、冲突或数据定制的自定义存储过程的方法。 第7章:逻辑修改记录 捕获到的消息在内部会转换为逻辑修改记录(Logical Change Record,LCR),本章详细介绍了LCR的概念、它们包含的信息以及深入了解这些信息的方法。当自定义Streams以支持业务需求时需要访问和修改LCR信息,本章通过使用一个可运行的示例来解释这一点,这个示例展示了操纵LCR内容的方法。 第8章:为数据复制配置Oracle Streams 在讨论完首要任务之后,本章详细讨论配置Streams复制的方法。除了讨论可以使用的多种不同方法外,还解释了使用Oracle提供的API来配置各种级别(如数据库级别、模式级别和表级别)的简单Streams复制的方法。本章还将讨论使用提供的PL/SQL包手动配置Streams复制的方法,以及在各种拓扑下如何配置复杂Streams复制。本章的示例脚本可以用来快速创建一个简单的Oracle Streams环境。 第9章:数据转换 本章讨论当源表和目标表在定义和结构上不同时,Oracle提供的用来在LCR中转换内容的存储过程。另外还使用示例讨论了创建自己的数据转换函数和存储过程来解决具体业务需求的方法,这些业务需求无法用Oracle提供的存储过程来解决。 第10章:数据冲突处理 本章讨论在Streams环境中可能发生的不同类型的数据冲突,讨论避免数据冲突的方法并解释当冲突无法避免时的处理方法,解释使用Oracle提供的冲突处理存储过程来解决冲突的方法。 第11章:管理和监控Streams复制 本章讨论Streams管理和任务监控。讨论如何启动和停止Streams进程、如何修改它们的参数及其他属性,以及监控它们状态、状况和性能的方法。另外还解释了在Streams环境中监控事务的方法,讨论当同一个源数据库存在多个目标时如何分割和合并功能及管理。本章还将展示安装和使用Streams性能顾问的方法,从而使监控点对点Streams性能更加容易。 第12章:维护和错误处理 本章讨论Streams维护和调试,包括通过增加新对象到复制中或者删除已存在的对象或组件来修改已有Streams复制的方法,还将解释使用Streams组件调试问题以及调试应用进程遇到的复制错误的方法,最后讨论使用数据比较存储过程来识别和修正源表和目标表之间的数据匹配错误的方法。 第13章:Streams性能考量 本章讨论对复制性能造成不好影响的常见原因和问题,讨论提高整个Streams性能的各种技术和配置设置。 第14章:OEM Grid Control在Streams复制中的应用 本章讨论如何使用OEM Grid Control 10.2.0.5来配置、管理和监控Oracle Streams复制环境。 附录A:Oracle Streams最佳实践 本附录讨论Oracle成功实现Oracle Streams复制的最优方法。 附录B:RAC环境中的Oracle Streams复制 本附录讨论针对Oracle RAC环境的Streams配置的额外细节。 附录C:Streams健康检查报告 本附录讨论通过创建和使用Streams健康检查报告来归档、审查和调试Streams环境的方法。 附录D:Streams复制的数据字典视图 本附录提供一个包括Streams组件和进程及其性能信息的数据字典列表和动态性能视图。 附录E:参考文献 本附录提供了一个本书参考的所有Oracle公司资料的列表。