第5章 使用RMAN备份进行恢复
认证目标
●描述和调整实例恢复
●执行完整和不完整恢复
●执行SPFILE、口令文件、控制文件和重做日志文件的恢复
●执行索引、只读表文件和临时文件的恢复
●将数据库还原到新主机上
本章介绍如何在恢复场景中使用RMAN。如果丢失了重要或不重要的数据文件、控制文件或整个数据库,那么需要使用RMAN执行恢复操作。
本章描述了以ARCHIVELOG模式运行的数据库的恢复场景。前面的章节曾介绍过ARCHIVELOG模式的所有优点和相对较少的缺点。当然,如果不以ARCHIVELOG模式运行,也会显示恢复选项以及NOARCHIVELOG模式的选项。
即使在NOARCHIVELOG模式下,也可以确信,在数据库外部因素导致实例崩溃后,Oracle的实例恢复能够使数据库回到一致的状态。期望的实例恢复时间需要与愿意承担的额外工作量取得平衡,这些工作就是通过使检查点在重做日志文件中尽可能靠前,使数据库处在一个“准备好恢复”的状态。
在备份和恢复场景中,映像副本扮演着重要的角色。本章将介绍在发生介质故障时如何通过恢复映像副本来加快数据库恢复速度,以及如何切换到映像副本和从中退出。
创建了备份后,必须确保可以使用它们来恢复数据库。本章将介绍如何将数据库还原到新主机上,以便测试恢复场景或将生产数据库移动到一个新主机上。
接下来将介绍如何执行不完整恢复,将数据库恢复到过去的某个时间点。如果数据库的逻辑受到损坏,包括(但不限于)出现的用户错误或DBA错误在完全恢复时会被重新创建的情况,这将非常有用。执行不完全恢复时,可以使用其他作用较为温和的选项,如使用Oracle的闪回表功能或使用SELECT... AS OF(对早先某个时间的数据执行查询)。
通常可将数据丢失或受损情形归纳为以下3种类型:用户错误、应用程序错误或介质错误。如果DBA或系统管理员无意间删除或替换了数据文件或其他与Oracle相关的文件,将发生用户错误。应用程序错误,如包含逻辑错误的备份脚本,可能备份错误文件或删除本应保留的文件。介质故障是硬件故障,它使数据文件变得临时不可用,或永久不再可用。这包括控制器故障、磁盘故障和网络故障等。在解决硬件问题后,这3种类型的恢复过程是相同的。
回想一下在数据文件丢失或受损时的“还原”和“恢复”步骤的区别。在业内人士看来,在发生故障后使数据库重新联机通常称为“恢复”。但是,Oracle命名约定将此过程分为两个步骤:还原和恢复。简单说来,还原过程将备份文件复制到数据文件丢失或受损的位置。还原的文件将包含备份发生时刻的数据行。此后,恢复过程应用归档重做日志信息(也可能包含联机重做日志信息),以便将数据库状态返回到故障时间点或故障点之前的任何时间点。
在考虑数据库故障时,另一个重要的区别在于“关键”与“非关键”故障。如果发生了非关键故障,数据库可以继续为所有用户或大多数用户服务。例如,可能只丢失了一个应用程序使用的表空间中的数据文件或多路复用重做日志组的一个副本。如果发生了关键故障,数据库将无法运行,例如丢失了SYSTEM表空间的数据文件或所有控制文件。
本章的第二部分介绍在丢失了临时表空间中的一个或多个数据文件时如何进行恢复。这是一个非关键故障,因为在执行恢复操作时,无须关闭数据库。与此类似,你将了解如果丢失了重做日志组成员或整个重做日志组(重做日志文件组有一个或多个成员,每个成员都是重做日志文件)如何进行恢复。
本章最后将介绍如何在丢失了一个或多个控制文件的情况下进行恢复。这可能是关键故障。理想状况下,你已经多次镜像了控制文件。但是,如果遇到最糟糕的情况,可以使用备份控制文件,尽量减少停机时间或丢失的数据,或者消除这种情况。