


备份与恢复的关系 备份一个ORACLE数据库,类似于买医疗保险——在遇到疾病之前不会意识到它的重要性,获得保险金的数量取决于保险单的种类。同理,随着制作备份的种类和频繁程度的不同,数据库发生故障后其恢复的可行性、难度与所花费的时间也不同。 数据库故障是指数据库运行过程中影响数据库正常使用的特殊事件。数据库故障有许多类型,最严重的是介质失败(如磁盘损坏),这种故障如不能恢复将导致数据库中数据的丢失。数据库故障类型有: 语句失败。用户进程失败。 实例失败。 用户或应用错误操作。这类错误可能是意外地删除了表中的数据等错误操作。 介质失败。如硬盘失败,硬盘中的数据丢失。 自然灾害。如地震、洪水等。 由于故障类型的不同,恢复数据库的方法也不同。通过装载备份来恢复数据库既是常用的恢复手段,也是恢复介质失败故障的主要方法。 备份与恢复要考虑的问题 备份与恢复要考虑以下的三个问题: 备份与恢复策略要考虑的商业、操作、及技术问题; 灾难恢复计划的组成; 测试备份与恢复策略的重要性。 能够进行什么样的恢复依赖于有什么样的备份。作为 DBA,有责任从以下三个方面维护数据库的可恢复性: 使数据库的失效次数减到最少,从而使数据库保持最大的可用性; 当数据库不可避免地失效后,要使恢复时间减到最少,从而使恢复的效率达到最高;当数据库失效后,要确保尽量少的数据丢失或根本不丢失,从而使数据具有最大的可恢复性。备份与恢复策略要考虑的商业、操作、及技术问题作为 DBA,首先需要了解企业是如何使用数据库系统的,以及企业对数据库的可用性,恢复性能,和数据的可恢复性以及恢复时间的要求。然后,DBA 需要使企业的管理人员了解维护这样的数据库的可用性的代价有多大。做到这点的最好方法是评估恢复需要的花费,以及丢失数据给企业带来的损失。 在代价被评估后,就可以进行备份与恢复的讨论了。此时,要定义数据库总体的可用性需求,并根据各项工作对数据库可用性的影响程度来定义工作重点的次序。例如,如果数据库需要 7*24 的可用性,那么其重要性就高于其它任何工作,其它任何需要关机才能做的工作就不能做。另外,数据库变化的情况也是备份与恢复策略需要考虑的一个因素。例如,如果数据不断改变,有新数据或数据文件加入,或表结构有大的变化,则应该经常备份;反之,如果数据是静态的或只读的,则备份一次即可。无论如何,应遵从这样一个原则,如果怀疑数据库的可恢复性,就应该备份。 灾难恢复计划的组成 针对灾难恢复,必须回答下述问题: 系统可能出现什么样的灾难恢复情况? 如果出现数据丢失,灾难恢复情况是怎样的? 系统中数据的易变程度如何? 如果出现问题,系统需要多快的速度恢复? 在各种情况下恢复策略的代价,以及相应的花时间重新录入数据的代价? 对这些问题的回答组成了灾难恢复计划。计算机是易坏的。主板上的芯片、主板电路、内存、电源等任何一项不能正常工作,都会导致计算机系统不能正常工作。当然,这些损坏可以修复,不会导致应用和数据的损坏。但是,如果计算机的硬盘损坏,将会导致数据丢失,此时必须用备份恢复数据。 灾难恢复的最重要步骤是设计充足频率的硬盘备份过程。备份过程应该满足系统要求的可恢复性。例如,如果数据库可有较长的关机时间,则可以每周进行一次冷备份,并归档重做日志;但是,如果数据库只有极少的关机时间,则只能从硬件的角度来考虑备份与恢复的问题,例如使用硬盘镜像或双机系统。选择备份策略的依据是:丢是数据的代价与确保数据不丢失的代价之比。 果每天都能备份当然会很理想,但要考虑其现实性。企业都在想办法降低维护成本,现实的方案才可能被采用。只要仔细计划,并想办法达到数据库可用性的底线,花少量的钱进行成功的备份与恢复也是可能的。 DBA 还应以服务协议的形式制订一个可恢复性与可用性的标准文件。该文件应成为讨论DBA 服务,以及服务是否能达到预期标准的依据。这样做可使所有相关人员对同样的预期有潜在的危机感。 测试备份与恢复策略的重要性 备份与恢复策略必须经测试无误后才可使用。如果进行了备份,但不知道该备份是否支持希望的恢复目标则与根本没有备份没有两样。 恢复策略也要考虑虑对环境的依赖性。例如,假如机器的硬盘失效了,供货商能在多长时间内提供一个新的硬盘;在机器需要重新启动时,能找到操作系统管理员吗? 另外一个需要考虑的问题是数据库是否能经受自然的破坏。应在与计算机不同的地方再存储一份备份介质,以免出现自然灾害时主机与备份一起遭到破坏。 最后需要考虑的问题是万一DBA 出现了问题怎么办?后备的DBA能否执行备份策略?他或她能找到支持用的文档吗?这些文档存在吗? 没有比花了大精力指定了好的计划,但没有测试其有效性而使其付诸东流的了。一个好的计划还应容纳人为错误,特别是用于开发的系统。理想的测试计划应包括以下内容: 一系列的测试例子及其状态描述; 测试结果是否成功的标准; 解决这些状态的步骤。 只有在上述情况测试成功的前提下,DBA 才应该考虑把备份计划付诸实施,用于实际使用的生产系统。 在数据库实际使用时,备份策略的测试也不能终止。小范围的测试可以确保备份策略可以满足未来的需求。随着应用系统的成熟,备份策略也应相应地成熟。如果备份策略不能满足新的需求,就应该重新设计。测试备份策略还有其它的一些好处: 测试人工的备份过程可能会发现人工的疏漏,促使DBA考虑自动的备份方法。只要自动的备份过程经过了测试,并能解决数据库改变后的(例如增加了表空间)的备份问题,自动备份是有益无害的。 测试的另外一个好处是可以发现数据块的问题。如果数据文件的一个或多个数据块损坏了,而又使用了数据库的物理备份方法,则损坏了的数据块会被拷贝到备份文件中,这会导致备份的损坏和数据库的损坏。如果不做测试,该问题是不会被发现的。当然,也可以通过设置INIT.ORA 文件中的参数DB_BLOCK_CHECKSUM 或用DBVERIFY 实用工具进行数据的完整性检查。 为什么要请人制定备份恢复计划和编写操作脚本 备份恢复计划极其重要,万一失手,损失不可估量。备份恢复计划和编写操作脚本需要高水平专业人员完成,以确保万无一失。 当然,如果用户自己有高水平的专业人员,自己完成这项工作是没有问题的,无需外援。

