在数据库以外宕机或执行备份恢复时,可能会遇到ORA-01113 问题。 ORA-01113 错误通常伴随着 ORA-01110 错误一起出现, ORA-01110 错误指向着报错的文件名
ORA-01113: file 21 needs media recovery
ORA-01110: data file 21 : '/ u01/app/oracle/oradata / users02 .dbf'
ORA-01113 错误表明,与控制文件和其他数据文件相比,该数据文件不是最新的。 Oracle 的架构是极其紧密的,所有的数据库文件(包括数据文件、 redolog 和控制文件)在数据库打开或检查点结束时必须同步。这就意味着所有的数据文件的检查点 SCN 必须相同。如果有一个特定的数据文件不满足这个情况,就会报 ORA-01113 错误。
例如,当将表空间置于热备份时,其所有的数据文件的检查点SCN 将以当前值冻结,直到发出 end backup 指令。如果数据库处于热备时崩溃,你尝试重新启动它而不做恢复,那么该表空间的其中一个数据文件很有可能会报 ORA-01113 错误,因为它的 SCN 可能比其他表空间中的控制文件和数据文件的 SCN 要低。
同样,使数据文件offline 也会导致它的检查点 SCN 被冻结。如果您只是尝试 online 该文件而不做任何恢复,那它的 SCN 可能比 redo log 文件的 SCN 旧的多,就会产生 ORA-01113 错误。
1) 启动到mount 状态
SQL> startup mount;
2) 执行以下查询
SQL> SELECT V1.GROUP#, MEMBER, SEQUENCE#, FIRST_CHANGE# FROM V$LOG V1, V$LOGFILE V2 WHERE V1.GROUP# = V2.GROUP# ;
这个查询将列出所有的redolog 和它们各自的顺序和最先更改的编号,接下来的步骤取决于发生 ORA-01113 的原因,我们依次讨论
发生ORA-01113 可能的原因如下:
1. 数据库实例崩溃时,表空间处于热备份状态
2. 发生在从备份中恢复数据文件或表空间后的启动时
3. 尝试online 数据文件或表空间时
4. 当使用“ using backup controlfile ”选项做不完全恢复时
1) 开启数据库至Mount
SQL> startup mount;
2) 执行以下查询确定那个数据文件处于热备份状态
SQL> SELECT V1.FILE#, NAME FROM V$BACKUP V1, V$DATAFILE V2 WHERE V1.STATUS = 'ACTIVE' AND V1.FILE# = V2.FILE# ;
3) 针对上面查询的结果,执行以下内容
SQL> ALTER DATABASE DATAFILE ' filename ' END BACKUP;
4) 开启数据库
SQL> alter database open;
1) 开始数据库至mount
SQL> startup mount;
2) 恢复数据文件
SQL> recover datafile ' filename ';
如果恢复超过一个数据文件,执行以下
SQL> recover tablespace tablespace_name;
如果恢复超过一个表空间,执行以下
SQL> recover database;
3) 确认每一个归档日志,直到收到 "Media recovery complete"
如果系统提示输入一个不存在的归档日志,Oracle 可能需要一个或多个 redolog 来进行恢复。将 ORA-280 消息中引用的序列号和 redolog 中的序列号进行比较。然后输入序列号与请求的序列号想匹配的 redolog 的完整路径。
4) 开启数据库
SQL> alter database open;
1) 恢复数据文件
SQL> recover datafile ' filename ' ;
如果恢复一个表空间,执行
SQL> recover tablespace tablespace_name;
如果恢复一个数据库,执行
SQL> recover database;
2) 确认每一个归档日志,直到收到 "Media recovery complete"
如果系统提示输入一个不存在的归档日志,Oracle 可能需要一个或多个 redolog 来进行恢复。将 ORA-280 消息中引用的序列号和 redolog 中的序列号进行比较。然后输入序列号与请求的序列号想匹配的 redolog 的完整路径。
3) 开始数据库
SQL> alter database open;
如果使用“ recover database using backup controlfile ”选项恢复数据,而没有指定“ until cancel ”选项,那么在“ alter database open resetlogs ”时,可能会遇到 ORA-01113 错误。
1) 再次恢复数据库
SQL> recover database using backup controlfile until cancel;
2) 过程中通过发出“ cancel ”命令取消恢复
3) 打开数据库
SQL> alter database open resetlogs;
---- end ----
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31529886/viewspace-2755146/,如需转载,请注明出处,否则将追究法律责任。