用户管理的备份中数据文件没有备份损坏情况下的恢复测试。这种情况下要求数据库必须运行在归档模式下,并且所有的归档日志文件及重做日志文件都存在。
  首先新建一个数据文件模拟数据文件丢失的情况:
  ALTER TABLESPACE USERS
  ADD DATAFILE 'D:ORACLEPRODUCT10.2.0ORADATACOLINusers02.dbf' SIZE 5120K REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE 32767M;
  SQL> alter table colin.emp
  2 allocate extent(size 100k datafile 'D:ORACLEPRODUCT10.2.0ORADATACOLINUSERS02.DBF');
  表已更改。
  SQL> shutdown immediate
  数据库已经关闭。
  已经卸载数据库。
  ORACLE 例程已经关闭。
  利用操作系统命令
  删除新建的数据文件D:ORACLEPRODUCT10.2.0ORADATACOLINusers02.dbf
  这里我们模拟了数据文件损坏/丢失的情况
  我们再启动数据库,结果报错
  SQL> startup
  ORACLE 例程已经启动。
  Total System Global Area  167772160 bytes
  Fixed Size                  1247900 bytes
  Variable Size              83887460 bytes
  Database Buffers           79691776 bytes
  Redo Buffers                2945024 bytes
  数据库装载完毕。
  ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
  ORA-01110: 数据文件 6: 'D:ORACLEPRODUCT10.2.0ORADATACOLINUSERS02.DBF'
  查询动态视图查看需要恢复的文件
  SQL> select * from v$recover_file;
  FILE# ONLINE  ONLINE_
  ---------- ------- -------
  ERROR                                                                CHANGE#
  ----------------------------------------------------------------- ----------
  TIME
  --------------
  6 ONLINE  ONLINE
  FILE NOT FOUND                   0
  SQL> select * from v$recovery_log;
  未选定行
  这里相应的日志文件还没有生成。
  下面我们开始恢复损坏/丢失的数据文件:
  1)离线丢失的数据文件:
  SQL> alter database datafile 6 offline;
  数据库已更改。
  2)重新打开数据库:
  SQL> alter database open;
  数据库已更改。
  这时数据库已打开,不要影响到其他的正常使用(其他无丢失损坏的文件)
  3)重新创建损坏/丢失的数据文件:
  SQL> alter database create datafile 'D:ORACLEPRODUCT10.2.0ORADATACOLINUSERS02.DBF' as 'D:ORACLEPRODUCT10.2.0ORADATACOLINUSERS02.DBF';
  数据库已更改。
  4)恢复损坏/丢失的数据文件:(这里要用到相应的归档日志文件及重做日志文件)
  SQL> recover datafile 'D:ORACLEPRODUCT10.2.0ORADATACOLINUSERS02.DBF';
  完成介质恢复。
  5)后再把相应的数据文件联机,Ok了~
  SQL> alter database datafile 'D:ORACLEPRODUCT10.2.0ORADATACOLINUSERS02.DBF' online;
  数据库已更改。