我看了“RESETLOGS后没有备份情况下的数据恢复(2)  ”这份网上资料,按照上面的步骤操作下了结果恢复出错:  
1.开启归档模式  
 
2.create  tablespace  demo  datafile  'f:\test\demo.dbf'  size  5M;    
create  user  demo  identified  by  demo  default  tablespace  demo  quota  unlimited  on  demo  temporary  tablespace  temp;    
grant  connect,alter  system  to  demo;    
alter  user  demo  account  unlock;    
 
3.备份3个日志文件和demo.dbf文件  
   做数据库的一致冷备份。    
copy  f:\test\demo.dbf  f:\cool\coola  
copy  E:\Oracle\oradata\ora9i\CONTROL01.CTL  f:\cool\ctl_a
copy  E:\Oracle\oradata\ora9i\CONTROL02.CTL  f:\cool\ctl_a    
copy  E:\Oracle\oradata\ora9i\CONTROL03.CTL  f:\cool\ctl_a    
 
4.以试验用户demo登录,并插入数据到表a中。    
create  table  a  (i  number);    
commit;  
insert  into  a  values(1);    
commit;  
alter  system  switch  logfile;    
insert  into  a  values(2);  
commit;  
alter  system  switch  logfile;  
insert  into  a  values(3);    
commit;    
alter  system  switch  logfile;    
 
5.记录当前时刻为B点。    
SQL>  select  to_char(sysdate,'DD-MONTH-YYYY  HH24:MI:SS')  "DATE"  from  dual;  
DATE    
--------------------------    
08-3月  -2005  19:10:57  
 
6.继续由用户demo向表a插入数据。    
insert  into  a  values(4);  
commit;    
alter  system  switch  logfile;    
insert  into  a  values(5);    
commit;  
alter  system  switch  logfile;    
insert  into  a  values(6);  
commit;  
alter  system  switch  logfile;    
alter  system  switch  logfile;    
alter  system  switch  logfile;  
 
7.记录当前时刻为B'点。    
 
SQL>  select  to_char(sysdate,'DD-MONTH-YYYY  HH24:MI:SS')  "DATE"  from  dual;    
DATE    
--------------------------    
08-3月  -2005  19:11:42  
 
8.模拟丢失所有当前(B'点)数据文件和控制文件。首先保存归档日志文,再把点A的数据文件和控制文件恢复到在线数据文件的目录。    
del     f:\test\demo.dbf  
copy   f:\arc\*.001  f:\cool\archa_b    
copy   f:\cool\coola\demo.dbf  f:\test
copy   f:\cool\ctl_a\CONTROL01.CTL  E:\Oracle\oradata\ora9i
copy   f:\cool\ctl_a\CONTROL02.CTL  E:\Oracle\oradata\ora9i
copy   f:\cool\ctl_a\CONTROL03.CTL  E:\Oracle\oradata\ora9i
 
9.以SYSDBA身份登录,执行从时刻A到时刻B的基于时间点的不完全媒体恢复,因为媒体恢复过程使用时刻A的控制文件,所以要加上using  backup  controlfile子句。    
SQL>  startup  mount  
ORACLE  例程已经启动。  
 
Total  System  Global  Area    135338868  bytes  
Fixed  Size                                      453492  bytes  
Variable  Size                          109051904  bytes  
Database  Buffers                      25165824  bytes  
Redo  Buffers                                  667648  bytes  
数据库装载完毕。  
SQL>  alter  session  set  nls_date_format  =  'yyyy-mm-dd  hh24:mi:ss';  
 
会话已更改。  
 
SQL>  recover  database  until  time  '2005-03-08  19:11:00'  using  backup  controlfile;  
 
ORA-00279:  更改  169494  (在  03/08/2005  19:08:37  生成)  对于线程  1  是必需的  
ORA-00289:  建议:  F:\ARC\ARC00001.001  
ORA-00280:  更改  169494  对于线程  1  是按序列  #  1  进行的  
 
 
指定日志:  {<RET>=suggested    |  filename    |  AUTO    |  CANCEL}  
F:\cool\archa_b\ARC00001.001  
ORA-00279:  更改  169625  (在  03/08/2005  19:10:38  生成)  对于线程  1  是必需的  
ORA-00289:  建议:  F:\ARC\ARC00002.001  
ORA-00280:  更改  169625  对于线程  1  是按序列  #  2  进行的  
ORA-00278:  此恢复不再需要日志文件  'F:\cool\archa_b\ARC00001.001'  
 
 
指定日志:  {<RET>=suggested    |  filename    |  AUTO    |  CANCEL}  
F:\cool\archa_b\ARC00002.001  
ORA-00279:  更改  169629  (在  03/08/2005  19:10:38  生成)  对于线程  1  是必需的  
ORA-00289:  建议:  F:\ARC\ARC00003.001  
ORA-00280:  更改  169629  对于线程  1  是按序列  #  3  进行的  
ORA-00278:  此恢复不再需要日志文件  'F:\cool\archa_b\ARC00002.001'  
 
 
指定日志:  {<RET>=suggested    |  filename    |  AUTO    |  CANCEL}  
F:\cool\archa_b\ARC00003.001  
ORA-00279:  更改  169635  (在  03/08/2005  19:10:44  生成)  对于线程  1  是必需的  
ORA-00289:  建议:  F:\ARC\ARC00004.001  
ORA-00280:  更改  169635  对于线程  1  是按序列  #  4  进行的  
ORA-00278:  此恢复不再需要日志文件  'F:\cool\archa_b\ARC00003.001'  
 
 
指定日志:  {<RET>=suggested    |  filename    |  AUTO    |  CANCEL}  
F:\cool\archa_b\ARC00004.001  
ORA-01547:  警告:  RECOVER  成功但  OPEN  RESETLOGS  将出现如下错误  
ORA-01152:  文件  1  没有从完备的旧备份中恢复  
ORA-01110:  数据文件  1:  'E:\ORACLE\ORADATA\ORA9I\SYSTEM01.DBF'  
 
 
ORA-01112:  未启动介质恢复  
 
然后数据就open不了了,请大家帮帮忙,看看是什么原因?谢了!!!

解决方案 »

  1.   

    C:\>svrmgrl
    svrmgrl>connect internal
    svrmgrl>shutdown
    svrmgrl>startup mount
    svrmgrl>set autorecovery on
    svrmgrl>recover database;
    svrmgrl>alter database open;
      

  2.   

    如果是9I就使用SQLPLUS /NOLOG在SQLPLUS里面实现恢复
      

  3.   

    参考下
    http://www.oradb.net/err/error_009.htm
      

  4.   

    哦,谢谢!
    svrmgrl>set autorecovery on
    svrmgrl>recover database;
    svrmgrl>alter database open;
    这样做的原因是什么,可否讲解一下,谢谢
      

  5.   

    估计你在“8.模拟丢失所有当前(B'点)数据文件和控制文件。首先保存归档日志文”中没有执行alter system switch logfile; --强制归档
    后再保存归档日志文件,否则无法恢复的。