打开数据库(复习)
- NOMOUNT:必须读取初始化参数,不会检查任何数据文件
- MOUNT:检查初始化参数文件中列出的所有控制文件是否都存在且已同步
- OPEN
- 检查控制文件知道的所有重做日志组是否都至少有一个成员。任何缺失的成员都会记录在预警日志中。
- 验证控制文件知道的所有数据文件是否存在,但不验证脱机文件。
-
- 如果缺失了任何文件,就会向管理员返回一个错误,指出第一个缺失的文件,此时实例保持在MOUNT状态
SQL> SELECT name, error
FROM v$datafile
JOIN v$recover_file
USING (file#)
- 如果缺失了任何文件,就会向管理员返回一个错误,指出第一个缺失的文件,此时实例保持在MOUNT状态
使数据库保持在打开状态
- 打开实例后,如果丢失了以下项,实例会失败
- 任何控制文件
- 属于系统或还原表空间的数据文件
- 整个重做日志组。只要组中至少有一个成员可用,实例就会保持在打开状态。
- 丢失了控制文件
- 关闭实例(如果它仍处于打开状态)。
- 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 关闭实例
- 装载数据库
- 还原并恢复缺失的数据文件
- 打开数据库