内容简介 
本书以DBA为中心,介绍了如何使用Oracle内置技术实现集成的、性价比很高的高可用性解决方案。从中可以获取关于Oracle实时应用集群、灾难规划与恢复、分布式数据库解决方案等的全部信息。本书还可以在运用Oracle Data Guard和闪回技术方面助您一臂之力。本书主要内容升级后的Oracle企业管理器网格控制台简化了网格管理为存储网格配备新的自动存储管理(ASM)机制使用Oracle实时应用集群(RAC)配置和管理数据库网格将应用程序配置为服务来实现公用计算使用自动工作负载仓库和顾问框架实现对系统的不间断监控运用Oracle Data Guard有效控制数据库故障使用Oracle恢复管理器(RMAN)有效实现备份使用Oracle闪回技术对用户导致的错误进行完美恢复探讨了高可用性技术中的Oracle流复制配置Oracle Net,实现透明的应用程序故障切换
前 言 作为一个经常被数据库管理员任意定义的术语,高可用性(High Availability, HA)已经被讨论了数年,并且应用于各种环境,几乎所有涉及到保持业务每时每刻都能正常运行的情况都可以用它来描述。然而,高可用性作为一种为人们所普遍认知的技术和实践的总称,在过去的几年里发生了根本的转变。虽然.com热潮和电子商务的大肆宣传都失败了,但可用性的概念渐渐形成:您的系统应当每周7天、每天24小时都处于可用状态。 虽然这一简单原则所涉及到的因数既广泛又复杂,但其实现却很简单:可用性最终要由使用您系统的用户来定义,用户对于HA的需求并不关心,他们只是简单地希望能够做到在深夜购书,或者能够在每个周末检查他们的退休金账户,或者能够在每个月末运行智能财务报表。这意味着任何真正的可用性解决方案都必须囊括所有涉及到的技术,从数据库到应用服务器,直到网络。这要求一个企业的所有技术人员要在几乎各个层面上进行合作。 那种不惜一切代价获取可用性的年代已经过去了,在对那些让系统无法正常运行的故障(如硬件故障、数据库中断、用户错误,甚至是自然灾害)进行处理的过程中,技术提供者与解决方案设计者们只给现代数据库管理员和系统管理员提供一些难以承受的选项。这些现代解决方案通常要么是独家的硬件配置,要么是在您已安装系统的适当位置增加昂贵的附加软件。诚然,它们大多数是与系统管理员有关的,但是,数据库的高可用性则是留给最终对数据负责的数据库管理员去攻克的一个难题。 什么是高可用性 不管您喜不喜欢,都应该将可用性视为一种行业规则,而不是一种例外情况,作为一个数据库管理员,高可用性指的是下列必须进行规划和筹备的相关问题: ● 正常运行时间 ● 性能 ● 灾难 ● 可管理性 正常运行时间从字面上看,指的是数据库必须昼夜不停地保持打开状态这一事实。数据库维护与管理必须联机进行,不能停机。 速度慢的数据库就是一种不可用的数据库。性能应始终被考虑在内,而且性能的提高不能以停机时间的增加为代价。这就意味着需要联机进行规模扩大、调整和重组。 无论是人为灾难还是自然灾难,灾难总会发生,因而在准备将数据库投入运营时必须将灾难考虑在内。这意味着必须具有一个安全的系统,在万一发生系统丢失时能够进行故障切换的系统,而这也意味着必须具备恰当的技术,以便能够帮助用户从小型的灾难中进行恢复,这些灾难包括:用户错误、内存损坏或数据库中断。 如果一个高可用性的解决方案过于复杂,那么它可能变得过于头重脚轻而导致自我崩溃,而且其在管理费用上的付出可能会超过在可用性方面的获益。因此,可管理性是HA必须考虑的重要因素。 以DBA为中心的可用性方案 以DBA为中心的可用性方案就是本书要阐述的内容。在书中,我们集中解释了普遍适用于数据库管理员的技术和操作,内容囊括了数据库正常运行时间、数据库性能和灾难规划。 但这并不意味着我们会完全忽略硬件和应用系统的需求,HA的网络与它们是紧密地结合在一起的。但是,以数据库为中心的方案提供了许多针对在特定需求下要考虑到的可用性的高性价比方法,以及在企业级关系数据库系统中所体现出的特殊挑战。我们希望能够帮助您成功地完成从DBA到HADBA(High Availability Database Administrator,高可用性数据库管理员)的转变。 利用已有技术 Oracle在您正在使用的核心RDBMS中内置了大量HA技术。本书所提供的仅是一种指南,帮助您了解并使用这些已经安装在工具包中但尚未用过的技术。虽然市场有大量关于高可用性的技术可供选择,但如果您已经购买了Oracle许可,那么在扩大您调查范围之前,您一定有兴趣了解您能够使用的基本功能到底有哪些。 诚然,现在有一些议论,认为Oracle提供的解决方案需要支付许可费用,这不过是变向地增加硬件解决方案的开支而已。但是我们认为使用以数据库为中心的HA技术确实为HA提供了最高性价比的方案,而且更便于数据库管理员管理这些技术。 面向集成 以DBA为中心的HA方案不仅为您提供了技术手段,而且为可用性多个方面的集成提供了更多的机会,而不需要单独地来处理这些问题。本书分别解释了各种HA技术,您可以根据自己的需要进行挑选。 同时,我们也着重地介绍了以数据库为中心的HA策略所提供的完全集成包。我们将实时应用集群(Real Application Cluster,RAC)和Data Guard放在一起,讨论了该解决方案面临的特殊挑战,并将介质备份策略也跟RAC和Data Guard放在一起,讨论恢复管理器(Recovery Manager,RMAN)与RAC及Data Guard是如何联合起来提供完全解决方案的,此外还将Oracle闪回技术与Data Guard一起介绍,可以令读者了解数据库闪回能够在系统失败后快速地重新实例化。其他类似的地方还有很多。当您致力于使用数据库可用性工具时,集成所带来的困难很快就会消失了。 了解“网格” 如果您不经常看广告的话,那么可能对Oracle Database 10g中的g所代表的“网格”不太熟悉。网格计算是一种计算理论,它假定计算需求可以采用与电力网相同的原理运作。您并不知道电流来自哪里或者电流如何被管理,您只知道将电源插上就可以得到所需的电流,而不用考虑这些电流是用于电灯,还是屋子里的洗衣机、烘干机和热水器。计算需求也应当是类似的:接入网格就可以获得所需的计算资源、信息和应用。您只要得到所需的资源即可,而不必关心计算机在哪里,或者它们是如何被管理的。 这种网格显然要以我们对电力网所期望获得的可用性为基础。如果电力网断了,即使是一天的时间,它也将成为城市报纸的头条新闻,因为这种事情每30年才会发生一次。因此,对于网格计算而言,其基石必须是高可用性。 目前的状况 由于网格的实现,对于正常运行时间提出了新的挑战,而数据库管理员需要的则是现成的解决方案。网格是导向,而业务则是我们行为的指南。为此,Oracle Database 10g为当前的可用性挑战提供了实用的解决方案。事实上,这些解决方案是对Oracle自发布Oracle 8i以来已经建立起的概念和技术的一种自然发展。就在我们著书讨论如何使用Oracle Database 10g的同时,许多选择已经在Oracle 9i甚至更早版本中就可用了。大家可以放心,我们目前正在正式撰写有关“网格”的内容。 本书的内容 本书着重介绍Oracle RDBMS所提供的Oracle技术,帮助读者构建高可用性数据库。我们将这些技术组织为4个部分: ● 逻辑可用性 ● 实时应用集群 ● 灾难规划与恢复 ● 分布式数据库解决方案 逻辑可用性 逻辑可用性指包括基本数据库配置和管理在内的那些特性和技术:init.ora参数、内存调整、数据文件存储、数据库对象重组及其他使用Oracle Database 10g建立的数据库中立即可用的技术。 我们首先在第1章“Oracle与可用性:各种停机场景”中,以一个卖木螺钉的虚拟公司所发生的一系列假想计算机停机场景为案例,对于每种停机场景,我们给出了一种方案,指导您使用哪些技术来帮助解决这些特定的问题。我们用这种方法在第2至11章中介绍了所讨论的技术是如何应用到真实的问题场景。我们在本书中还引入了有些令人为难的简单数据库表,用以介绍高可用性数据库管理示例。 我们从第2章“RDBMS关于可用性的特性”开始对以DBA为中心的可用性进行介绍。第2章专门介绍了在数据库中不易发现的Oracle选项:动态参数修改、诸如分区和物化视图的体系结构可用性选项、LogMiner和可传输表空间。我们着重讨论了Oracle重写的企业管理器组件包所带来的益处,一站式的界面可让操作更简单。 第3章“为可用性调整数据库”更深入地讨论了为获得最大正常运行时间而对数据库进行的调整。它包括对数据库内存因素的考虑,以及在最小化磁盘资源管理时,利用新的自动存储管理(Automatic Storage Management)机制更好地使用可用的磁盘空间。我们还着重讨论了联机的数据库性能调整,包括对新的自动工作负载仓库(Automatic Workload Repository)机制的使用——它是已有Statspack软件的分支。 实时应用集群(RAC) 第Ⅱ部分专门介绍实时应用集群(RAC)的安装、配置和管理的完整过程。作为Oracle提供的一项主要的可用性技术,RAC提供了一种集群解决方案,它最早出现于Oracle 9i中,目前得到了快速发展,成为了Oracle Database 10g下一代企业数据库的主要计算方式。 第4章“RAC安装与配置”是对RAC安装的完全指导,首先提供了针对初学者的基本体系结构的介绍,然后用示例说明了以最低的投入即可进行实践活动。它涉及了OS安装的所有内容,包括Oracle集群文件系统(OCFS)的安装等。为快速RAC实现方案进行的数据库配置是逐步完成的,包括了如何配置归档日志等选项。 第5章“RAC环境中的数据库管理”深入研究了RAC栈,讨论了更易于管理的优势以及对集群数据库的特殊支持。本章仔细研究了RAC特定的重做和撤销操作的过程,并介绍了可用性中必不可少的自动补丁更新、移除集群节点及增加集群节点的问题。 第6章“公用计算:应用即服务”主要介绍RAC环境中服务的实现,即将应用视为服务,它是迈向公用计算的第一步。服务的概念将随更重要的配置步骤进行讨论。 灾难规划与恢复 第Ⅲ部分介绍的技术可用于将由于不可预知的问题而导致的计算机停机时间降至最小化。这可能是由于自然灾害或电力中断而导致整个站点丢失,或者是由于硬件驱动器烧毁或内存故障而导致较小范围的中断。问题还可能来自于用户错误:不正确的更新、逻辑应用错误或者误删除表。一旦发生这些类型的问题,处理好这些问题的关键应当是提前作好准备,然后用适当的技术正确地处理不同类型的灾难。 第7章“Oracle Data Guard:容灾方案”进一步研究了对Oracle中最常被忽略的特性——Data Guard——所进行的配置和管理。作为一种完全的灾难恢复解决方案,Data Guard提供了一个丰富的工具包,它使用数据库现有的体系结构将一个完整的数据库镜像到其他站点。Data Guard可与RAC和新的闪回技术相结合使用,是整体站点丢失或暂时中断时能出色地保持业务连续性的有用工具。 第8章“高可用环境的备份与恢复”为我们介绍了Oracle服务器管理的恢复实用程序RMAN的使用,以及在与停机进行“斗争”的过程中使用RMAN进行介质备份,如何与RAC和Data Guard成为并肩作战的“战友”。本章的主题包括关于RMAN配置和使用的入门指导、企业管理器集成、诸如闪回恢复区等Oracle Database 10g的新特性,以及根据需要进行备份和恢复。本章的高级主题包括RMAN到RAC集群的集成以及使用RMAN帮助建立Data Guard环境。 第9章“Oracle闪回技术:处理用户错误”集中讨论了Oracle称为“闪回恢复(Flashback Recovery)”的新技术包。该技术包提供了当面临那些最令人恐怖的事故(用户错误)时,如何最小化中断时间和数据丢失的技术。闪回恢复具有4种相关类型:闪回查询(也可参见Oracle 9i)、闪回事务、闪回删除(用于恢复被误删除的对象)和闪回数据库。 分布式数据库解决方案 在第Ⅳ部分中,我们讨论了利用分布式数据库解决方案来支持高可用性的优势。在特定环境中,通常可以证明,放弃单站点可用性而使用软件解决方案将表分布到多个站点上,从而使所有人都可以在本地看到相同的表,这样的做法是最好的。通过将数据库操作分布到多个相互独立的数据库上,不仅可以提供强有力的可用性解决方案,而且可以更方便地为不同站点数据匹配业务需求。 第10章“用于提供高可用性的Oracle流”讨论了Oracle流,即一种基于队列的解决方案,它提供了一种在相互独立的站点上进行流更新的方法。我们在这里仅作了概述,着重介绍使用流提供高可用性解决方案和用于提供数据库副本的复制功能。 第11章“OracleNet故障切换的网络配置”简要讨论了针对各种可用性解决方案的Oracle侦听器的网络配置。其内容包括设置用于透明应用程序故障切换(Transparent Application Failover,TAF)、RAC、Data Guard和流的侦听器。 HA工作室 本书试图对Oracle高可用性技术的使用提供一种概念上的描述。我们也试图提供一个真实场景,以便将这些集成技术的功能充分展示出来,让您看到其价值。 在介绍不同产品的配置和设置时,我们给出大量逐步进行的操作提示。作为技术书籍的读者,我们知道配置并不是您每天都要进行的工作,但这些尝试性的指导是非常宝贵的。一本好书并不应仅仅帮助您理解某些内容,有时您需要根据书本中的指导内容一步一步地进行工作。 这就是我们在本书中开设“HA工作室”的原因。下面是它的工作方式:每当需要使用指导才能达到某种特定目的时,如将Solaris上某个数据库的一个表空间传输到Linux上的某个数据库,本书将在“HA工作室”中介绍其详细操作和指令。当看到相关的内容,您就知道下列步骤与任何概念性的解释都无关,使用它们可以帮助您完成操作。 这样,可以在任何需要的时候快速方便地访问HA工作室。如果您阅读了本书之后发现仍存有疑问,则可以从这些配置步骤中获得对安装、配置或管理技术的快速指导。 关于实用示例 在开始整理本书时,我们注意到了书中涉及的话题的范围,经过多次交换意见后,我们做出决定:本书中使用的所有示例都应可以在Linux上运行。 我们知道您所用的产品系统可能并不是运行在Linux上,并且当RAC和第三方集群产品同时使用时,有些用于高可用性的配置会包含OS特定的步骤。 指导思想有以下几点: 第一,我们强调以数据库为中心的可用性观点,而且我们在本书中讨论的绝大多数技术在所有操作系统上都可以运行,因此,代码是可移植的,不会受我们测试环境的影响。 第二,使用Oracle提供的附加软件可以消除许多OS特定的配置,例如用于RAC的Oracle集群文件系统(Oracle Cluster File System),用于管理卷的自动存储管理(Automated Storage Management)及用于介质备份的RMAN,都是这类附加软件。 第三,我们希望写一本可以让您拿来用于小型测试环境的书,可以让您用廉价的配置对书中介绍的可用性技术进行检验。对于这种环境,只有使用诸如Linux之类对价格敏感的、可运行在常见硬件上的OS才有意义。这也意味着您可以在家里自学如何使用复杂的商用计算概念。作为自学成才的DBA,我们了解测试对于理解的价值。 最后,Linux作为一种操作系统,已经被众多大企业考虑作为未来的战略平台,其中包括Oracle公司,它看好Linux是一种低价的操作系统,并且可以在一般硬件上运行,而这将是开启网格计算潜能并且对所有数据库实现高可用性的钥匙。 关于Linux的版本 Oracle Database 10g不能在所有的Linux版本上运行。尽管这一点初看起来有些遗憾,但事实上由于Linux的开放源代码特性,其内核具有很高的变动性。为了避免无法支持的内核更新,Oracle与主要的Linux发布提供商合作开发出一种商用Linux,可以确保Oracle Database 10g的运行。 Oracle在Red Hat上的运行可能是最好的,Red Hat有两种产品都支持Oracle Database 10g的运行:Red Hat Advanced Server 2.1和Red Hat Enterprise Linux 3.0。事实上,如果您购买了这些操作系统及Oracle,您就可以从Oracle公司获得对Red Hat产品的OS支持。 Oracle也支持UnitedLinux 1.0,它是一种商业备用的Linux,是SuSe、Turbo及其他发布提供商的合作产品。但是,Oracle目前尚未提供针对United Linux的OS支持。 我们在Red Hat Enterprise Linux 3.0上运行我们的示例。尽管要多花一些钱购买这一低端产品,我们仍推荐使用它。您当然可以在Oracle不支持的操作系统上运行Oracle,但这需要更多的工作,您必须要自己去尝试了。 为稳定的高可用性作好准备 我们的介绍已经结束了,现在轮到您来发掘以DBA为中心的高可用性方案的威力了。技术集群通常都是复杂的,您可能会遇到一些挫折,但是,结果将是令人记忆深刻的,所有的努力都是值得的。