首先保证你已经对整个数据库做了一次完整的冷备份或者热备份(备份过程省略)
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination F:/oracle/ora92/RDBMS
Oldest online log sequence 0
Next log sequence to archive 1
Current log sequence 1
表明数据库运行在归档模式下
SQL> select * from backup;
ID
----------
1
2
3
测试表backup中已经存在三条数据
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
数据库完全关闭之后就可以删除表backup所在表空间的文件backup.dbf了,用来模拟数据文件的损坏
然后启动数据库
SQL> startup
ORACLE instance started.
Total System Global Area 143727516 bytes
Fixed Size 453532 bytes
Variable Size 109051904 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 11 - see DBWR trace file
ORA-01110: data file 11: 'F:/ORACLE/ORADATA/ORACAS/BACKUP.DBF'
显然会报错的:)
查看
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- ---------
11 ONLINE ONLINE FILE NOT FOUND 0
然后把备份好的backup.dbf文件restore过来
SQL> recover database
Media recovery complete.
SQL> select * from backup;
ID
----------
1
2
3
4
小节:
1、restore all the corrupt datafile from the cold or hot backup;
2、startup mount;
3、recover database;
4、alter database open;
btw:This is a sort of complete recovery.