ITPub博客

首页 > 数据库 > Oracle > 【问题处理】ORA-01113 file xxx need media recovery

【问题处理】ORA-01113 file xxx need media recovery

原创 Oracle 作者:恩强Boy 时间:2021-02-01 16:53:47 0 删除 编辑

问题说明

在数据库以外宕机或执行备份恢复时,可能会遇到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;

情况三:尝试online 数据文件或表空间时

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;

情况四:当使用using backup controlfile ”选项做不完全恢复时

如果使用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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
勤奋,专注和练习

注册时间:2018-04-03

  • 博文量
    77
  • 访问量
    143642