ocp 042 第十六章:执行数据库恢复

打开数据库(复习)

数据库从shutdownopen必须经过以下两个状态进行一些检查:

· NOMOUNT:必须读取初始化参数,不会检查任何数据文件;

· MOUNT检查初始化参数文件中列出的所有控制文件是否都存在且已同步;

OPEN

· 检查控制文件知道的所有重做日志组是否都至少有一个成员。任何缺失的成员都会记录在预警日志中。

· 验证控制文件知道的所有数据文件是否存在,但不验证脱机文件。如果缺失了任何文件,就会向管理员返回一个错误,指出第一个缺失的文件,此时实例保持在MOUNT状态,可以通过V$recover_file动态性能试图来获取需要得意的文件完整列表。

·  验证所有委托级的文件或只读数据文件是否与控制文件同步,如果文件不同步,管理员就必须执行介质恢复,此时实例保持在mount状态

SQL> SELECT name, error FROM v$datafile JOIN v$recover_file 
USING (file#

 

使数据库保持在打开状态

打开实例后,如果丢失了以下项,实例会失败

· 任何控制文件

· 属于系统或还原表空间的数据文件

· 整个重做日志组。只要组中至少有一个成员可用,实例就会保持在打开状态。

丢失了控制文件

· 关闭实例(如果它仍处于打开状态)。 

· shutdown abort

· 通过复制现有控制文件还原缺失的控制文件。 

· cp  .... to ...

· 启动实例 

· startup

丢失了重做日志文件

· 丢失了单个重做日志组成员后进行恢复并不会影响运行的实例。

· 恢复步骤 :

· 检查预警日志,确定是否有缺失的日志文件。

· 先删除丢失的重做日志成员   

     SQL> ALTER DATABASE DROP LOGFILE MEMBER 'redo01a.log'

· 添加新的成员以替换丢失的重做日志成员   

    SQL> ALTER DATABASE ADD LOGFILE MEMBER 'redo01a.log'  TO GROUP 2;

· 如果介质故障是由于丢失了磁盘驱动器或控制器造成的,请重命名缺失文件。

· 如果重做日志组已归档,或者您处于 NOARCHIVELOG模式下,则可选择在清除日志组后重新创建缺失文件来解决问题。 

SQL> ALTER DATABASE CLEAR LOGFILE GROUP #; 

 

在 NOARCHIVELOG 模式下丢失了数据文件

· 关闭实例(如果尚未关闭)。

· 从备份还原整个数据库,包括所有数据和控制文件

· 打开数据库

· 让用户重新输入自上次备份以来所做的所有更改

在 ARCHIVELOG 模式下丢失了非关键数据文件(不属于systemundo表)

· 无需关闭数据库,还原时选择数据文件

在 ARCHIVELOG 模式下丢失了系统关键数据文件

· 使用 SHUTDOWN ABORT 关闭实例

· 装载数据库

· 还原并恢复缺失的数据文件

· 打开数据库

 

posted @ 2011-11-13 15:49    阅读(160)  评论(0编辑  收藏  举报