ocp 042 第十六章:执行数据库恢复
打开数据库(复习)
数据库从shutdown到open必须经过以下两个状态进行一些检查:
· 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 模式下丢失了非关键数据文件(不属于system或undo表)
· 无需关闭数据库,还原时选择数据文件
在 ARCHIVELOG 模式下丢失了系统关键数据文件
· 使用 SHUTDOWN ABORT 关闭实例
· 装载数据库
· 还原并恢复缺失的数据文件
· 打开数据库