0.1 解决旧问题和提出新问题 在《Oracle 9i RMAN备份与恢复技术》(清华大学出版社引进并出版)一书中,我们在前言中提出了如下问题:如何在可用性与可恢复性之间寻求平衡?然后通过全面介绍Oracle的备份和恢复解决方案,我们回答了这个问题。此书的不错销量说明很多人喜欢这个答案。 后来,在寻求可用性与灾难恢复的平衡时,我们又提出了一个子问题:怎样维持数据库的运转和可用,且确保性能不会降低,同时又使数据库具有灾难防护能力呢?RMAN同样是这个问题的答案,而本书正是帮助您掌握Recovery Manager的权威性指南。 随着时间的推移,数据库变得越来越大,企业的应用也越来越复杂。新的范例不断出现,业务需求也不断更新(至少在服务器上是如此)。并且无论解决了多少问题,每天又会有新的问题出现。作为DBA,一路走来我们已经解决了简单的可用性问题,并且实现了多个企业范围的解决方案,以确保我们的数据库正常运转并防止发生灾难。从数据处于正常使用的结果来看,我们中的大多数人都已经在使用RMAN。 但是,新的问题又出现了。虽然我们用RMAN来备份和恢复数据库,数据量每天都在增长,并且磁带的速度已经达到极限。企业在很短的时间周期内购买了大量磁盘存储阵列,而且其价格的下跌速度远远快于摩尔定律所预测的情况。因此,没有人愿意降低备份的速度,但是当CIO关注可用性时,就提出了一个新的术语:恢复的平均时间。 由此提出了一个新的问题:如何在发生故障后最小化恢复的平均时间? 您可能已经猜到,这个问题的答案与《Oracle 9i RMAN备份与恢复技术》一书中的相同:即使用RMAN。实际上,Oracle 每个主要的数据库软件版本都捆绑了Oracle Recovery Manager(简写为RMAN)。RMAN提供了一个备份和恢复数据库的接口。但是,本书主要介绍Oracle 10g中的RMAN,并且针对的是网格计算中的RMAN。 RMAN还可以提供许多非常有用的功能,您可以使用这些功能实现更高级的备份与恢复策略。您仍然可以执行如下操作: ● 恢复单个数据块,并且避免中断单个表之外的其他操作。 ● 创建备用数据库以使系统避免受到与灾难相关的损耗。 ● 直接在磁带上备份数据,以减轻磁盘存储系统的负荷。 ● 管理许多企业级数据库的备份与恢复工作。 但是,Oracle 10g中的RMAN也与企业一起不断地发展,以利用新开发的数据库和存储技术。RMAN已成为磁盘备份以及在测试和开发阶段的可靠工具。RMAN已在多方面改进以适应更高的安全需求和备份资源管理任务。最重要的是,RMAN致力于满足一个关键的业务需求:在发生某些类型的故障后最小化停机时间。 因为RMAN不断发展,本书也在介绍RMAN的基础上进行了适当扩展,讨论了Oracle提供的新闪回技术以帮助读者从用户导致的故障(对介质备份工具,如RMAN来说这是最难处理的问题)中恢复。 0.2 为DBA和系统管理员提供帮助 为Oracle数据库选择稳定可靠的备份策略时,可能出现的最棘手的问题是:备份策略总是会使数据库管理员和系统管理员的任务出现重叠。选择RMAN作为备份策略也存在同样的问题。RMAN与Oracle RDBMS的集成意味着必须具备Oracle数据库的实际经验。但是,对外部磁带存储设备和网络拓扑结构的依赖又使得DBA管理网络计算机系统的能力显得非常重要。这就引发了职责的分工,对两边来说都是个难题。 此外,业务需求将模糊DBA和系统管理员的职责范围。或者更为准确地说,DBA会发现他们的工作不断增加,已经扩展到要做一些系统管理员的工作,而系统管理员则会发现要花费更多的时间来学习SQL命令。 本书将解决这种角色上的重叠,具体体现在针对数据库备份这个最容易产生角色重叠的领域提供指导性的建议。 0.3 更为优秀的RMAN 从Oracle 8.0.3版本(Oracle8的第一个产品版本)开始引入了RMAN。在这之前,Oracle提供的直接在磁带上生成备份的接口使用Export实用程序进行逻辑备份,或使用Enterprise Backup Utility(EBU)。现在已经不再使用EBU,这也是最后一次提及该工具。 最初的RMAN版本难免有不尽人意之处,而且存在不少错误。但是,其后的版本添加了一些新的功能,修正了软件故障,并且改进了接口。理解RMAN版本演化的最好方法是想象一下演示人类进化过程的传统海报。在海报上的左边,是一只靠四肢行走的猴子。稍往右看,是一个逐渐直立行走的人,直到最右边,所看到的是一个完全直立行走的现代人。 在Oracle 9i版本中,RMAN的功能更加完备,并且已经成为用于高可用性数据库系统的各种重要策略的必要组件。 现在,RMAN已经经历了两个10g版本,在功能上不断地改进和完善,其目标是成为功能完善的可用组件。 0.4 本书主要内容 本书介绍了Oracle Database 10g Release 2(10.2.0.1.0版本)中的最新功能,帮助您充分了解RMAN接口的最新功能,并且说明了所增加的新特性。如果某些内容在Oracle Database 10g Release 1中还未涉及到,我们会在文中说明这种情况,不过所有代码示例和体系结构说明都基于RMAN的10gR2版本。 如果您使用的仍然是Oracle 9i或Oracle 8i,则应该学习《Oracle 9i RMAN备份与恢复技术》一书。本书对于前面版本中已有的功能则不再讨论。显而易见的是,本书全面介绍了在Oracle 10g中执行各项操作的方式,但是没有指出或引用前面版本的内容,只有在讨论Oracle 10g中非常酷的新特性时才会提到前面的版本。 0.5 更有效地使用本书 与其他技术指南一样,您可以通过阅读本书来熟悉RMAN及其在高可用性或灾难恢复解决方案中的作用。本书采用由简入繁,循序渐进的方式,一步一步地讨论了从基本原则到设置、备份的内容,最后介绍了高级功能与各种实习。 第Ⅰ部分介绍了Oracle RDBMS中备份与恢复的基本原理,您可以理解RMAN的概念和体系结构。本部分的两章内容是其他章节的基础,我们建议您认真阅读和理解这些概念。如果能够理解该部分中所描述的概念和内部运行机制,您就能轻而易举地理解本书的其余部分。 第Ⅱ部分讨论了RMAN的初始设置。首先介绍了所有可能的RMAN配置选项,然后讨论了RMAN与介质管理器的集成。介质管理器允许用户将备份直接写入磁带设备。目前市场上有多种介质管理器产品,本部分将讨论4种最常用的产品:Oracle自带的Secure Backup、VERITAS NetBackup、EMC NetWorker Module for Oracle,以及IBM Tivoli Storage Manager。 第Ⅲ部分为您提供了有关RMAN用法的基础知识,其范围从最基本的备份操作到最高级的恢复选项。我们将讨论目录维护和查看目录的方法,以便更有效地管理不断存储的备份。此处将介绍Oracle中经过重新设计的Enterprise Manager产品,并将介绍如何使用闪回技术从逻辑错误中恢复。最后,还将讨论为优化性能对RMAN备份与恢复进行的调整。 第Ⅳ部分介绍了更高级的功能,以让您了解利用RMAN完成简单备份操作之外能完成的其他任务。本部分的内容包括:使用RMAN备份生成数据库的克隆副本和使用备份创建Oracle Data Guard使用的备用数据库;根据特殊的需求和要求在Real Application Clusters(RAC)环境中使用RMAN;对一系列RMAN案例的分析,这些案例深入研究了需要使用RMAN的各种情况。 第V部分中的附录A包括RMAN语法参考,您可以借助该附录成功地构建RMAN命令;附录B探讨了RMAN目录,以及数据库中的V$视图和恢复目录中的rc_*视图;附录C详细介绍了如何设置RMAN测试环境。在实现产品备份与恢复策略前,您可以使用这个测试环境来测试各种RMAN功能。 0.6 RMAN实践 当然,您可能不会细读书中的所有内容。一本优秀的技术书籍应该是摆放在您计算机旁边,供您随时查阅。 除了概念解释外,本书实际上是一本参考手册。我们在书中综合了各种有用的技术和简便的方法。即使您不熟悉RMAN的整个体系结构,也可以随时运用这些方法。有时候,尤其是在备份与恢复操作中,我们只需要知道该怎么做,而不需要知道为什么要这样做。因为谁都不希望被一大堆恢复工作和操作语法弄得焦头烂额,而使得产品数据库处于空闲状态,并导致时间和金钱白白流失。 因此,为了突出重点,我们在本书中引入了一些RMAN实践,阅读过Oracle 9i版本的读者应该已经非常熟悉这些RMAN实践。在这些RMAN实践中,我们提供了用于执行指定操作的代码或用于完成特定项目的一系列步骤,以帮助您快速完成各种工作。我们为RMAN实践添加了灰色方框,当您看到这种方框时,就可以知道下面的页面将介绍一些实际的步骤,从而遵循这些步骤以快速地完成工作。可以将RMAN实践视为食谱,它提供了快速做好一顿饭所需的各种配料和混合这些配料的说明。 除了RMAN实践之外,本书最后一章的一系列案例分析讨论了多种备份与恢复情况,以及如何处理这些情况。在所介绍的备份与恢复情况中,既有在重新创建控制文件时保留备份元数据的简单案例,也有通过resetlogs命令恢复数据库的复杂案例。 我们再次建议您一章章地阅读本书。因为理解产品的概念是最重要的,特别是用于保护数据库的产品。 总之,RMAN是一个值得深入研究和充分利用的产品,它能够节省您的时间和精力,并帮助您解决各种问题。 最后,请将您对本书的建议发送至wkservice@tup.tsinghua.edu.cn,我们将不胜感激。