在启动实例时发现应用数据文件丢失或数据文件头损坏,启动实例会提示如下错误,并只能启动到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