一般来说,只要数据库处于归档模式,都是可以恢复的。可以采用Recover命令来恢复
先冷备份数据库所有的数据库文件(日志文件,数据文件,控制文件等) SVRMGR>  set  autorecovery  on  
SVRMGR>  recover  datafile  'd:\WIN2000\ORACLE\DATABASE\SYS1IRCL.ORA';  
SVRMGR>  alter  database  open; 因为用RECOVER恢复启动数据库是要从新写日志的,如果不成功还可以用备份  
来用其他的方法:  如果不成功,可以再试试下面的方案
SVRMGRL>  connect  internal;  
SVRMGRL>  SHUTDOWN  IMMEDIATE;        
SVRMGRL>  STARTUP  MOUNT;  
SVRMGRL>  recover  database  until  time  'YYYY-MM-DD:hh:mm:ss';--'数据库能正常启动的近一次的时间'   
SVRMGRL>  ALTER  DATABASE  OPEN  resetlogs;  如果日志里有足够的信息,一般情况下都能正常恢复:(因为我们只要这几个日志文件  
,所以为什么不要在做太多操作,先备份,每做一次检查点都会写日志)。  分数拿来Oracle小王子

解决方案 »

  1.   

    一般来说,系统会有3个control file
    修改init.ora 文件,使无法使用的控制文件不在control_files参数中定义即可恢复  svrmgrl>connect  internal  
    svrmgrl>shutdown  abort  修改init.ora
    例如:
    修改前  
    control_files  =  ("C:\Oracle\oradata\oradb\control01.ctl",  "C:\Oracle\oradata\oradb\control02.ctl",    
                           "C:\Oracle\oradata\oradb\control03.ctl")  修改后  
    control_files  =  ("C:\Oracle\oradata\oradb\control01.ctl",  "C:\Oracle\oradata\oradb\control02.ctl")  svrmgrl>startup 
    这样就可以了分数再拿来
    oracle小王子
      

  2.   

    to  francowang(自然英雄) 
    按照您的方法做了,提示如下:Autorecovery                    ON
    SVRMGR> CONNECT INTERNAL
    Password:
    Connected.
    SVRMGR> recover datafile 'D:\ORANT\DATABASE\SYS1ORCL.ORA';
    ORA-00283: recovery session canceled due to errors
    ORA-01122: database file 1 failed verification check
    ORA-01110: data file 1: 'D:\ORANT\DATABASE\SYS1ORCL.ORA'
    ORA-01207: file is more recent than controlfile - old controlfile