在启动实例时发现应用数据文件丢失或数据文件头损坏,启动实例会提示如下错误,并只能启动到mount状态。

SQL> startup

ORACLE instance started.

Total System Global Area 1048059904 bytes

Fixed Size                  2235000 bytes

Variable Size             608175496 bytes

Database Buffers          432013312 bytes

Redo Buffers                5636096 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 4 - see DBWR trace file

ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'

这种情况的恢复方法与关键数据文件恢复方法相同。启动实例到mount状态,在RMAN中执行已下命令:即可完成恢复。

run{

restore datafile 4;

recover database;

alter database open;

}

如果在数据库运行过程中发现应用数据文件损坏,此时可以在线进行恢复,不需要关闭数据库。

步骤如下:

A、offline 损坏的数据文件

SQL> alter database datafile '/u01/app/oracle/oradata/orcl/users01.dbf' offline;

Database altered.

此时查询v$datafile视图status,该数据文件状态会变成RECOVER状态

SQL>  select status from v$datafile;

STATUS

-------

SYSTEM

ONLINE

ONLINE

RECOVER

B 、在RMAN中,还原并恢复损坏的数据文件

 RMAN>run{

      restore datafile 4;

      recover datafile 4; 

}

C、online 数据文件

SQL> alter database datafile '/u01/app/oracle/oradata/orcl/users01.dbf' online;

Database altered.

再次查询$datafile视图status,都为online状态,恢复完成。

SQL> select status from v$datafile;

STATUS

-------

SYSTEM

ONLINE

ONLINE

ONLINE