情况介绍:
有一数据库(9i),非归档模式,以前未作过备份,控制文件也没有作过备份;
1、昨天早上无法正常启动,说两个控制文件版本不一致,一查,发现3个控制文件有不同,1和2完全相同,3却与1和2不同,那么就拿1把3覆盖了。
2、然后再启动,又报错说log 3 的log # in header,具体记不清楚了,意思就是说日志文件组3的头信息不对,那么我就mount数据库,结果发现,日志文件3是current的,既不能clear,也不能drop。
3、然后,因为有重建控制文件的脚本,然后又nomunt数据库,重建控制文件,然后使用recover database using backup controlfile,结果也报错,说需要归档的日志文件序列号为631,可是我的数据库为非归档模式,哪里来的归档文件,我就把日志文件3按照刚才的提示,重命名为提示需要的归档文件名,结果说,序列号为629,不是631,不行。
我真的是不知道该怎么办了,请帮忙解决一下,谢谢!

解决方案 »

  1.   

    首先你操作(RECOVER)的时候首先要把,数据库冷备份,这是必须的。
      

  2.   

    操作系统linux,数据库oracle 9i
      

  3.   

    就拿1把3覆盖了?
    我怎么看着 3 才是current 的controlfile
    用3覆盖1,2试试序列号为629,不是631
    那就试试别的 logfile吧
      

  4.   

    l2g32003(leeshow) 老大,那个controlfile有效还看不出来吗?如果我覆盖错了,那错误就更严重了
    序列号我可以通过v$log来查看,试试别的,更加不行了
      

  5.   

    确认正确的控制文件.
    试一试:
    _ALLOW_RESETLOGS_CORRUPTION=TRUE   (ini.ora)
    recover database using backup controlfile until cancel;
    alter database open resetlogs;
    总的来说,应该不是日志文件引起的,应该在控制文件.
    如果是log3(current)引起的,将很难恢复,如果数据不是特别重要,建议不要浪费太多时间了.
      

  6.   

    兄弟是掉电造成的吗?
    1.control file的问题你已经解决了
    2.你当前的重做日志头的状态和控制文件等不一致了
    如果有当前的control file 肯定不用备份的
    不知道你为什么要用备份control file 恢复?看来你要不完全恢复,但需要有一个全备的,你也没有,对不起,我说了半天,我没有办法!找oracle 支持吧!
      

  7.   

       冷备份你的数据库。因为下面的操作会对你的数据库照成
    不可恢复的操作。
        sqlplus /nolog
     SQLPLUS>CONNECT AS SYSDBA
     SQLPLUS>STARTUP MOUNT;
     SQLPLUS> recover database until time 'YYYY-MM-DD:hh:mm:ss';--'能正常启动的进一次时间'
     SQLPLUS> ALTER DATABASE OPEN resetlogs;
      

  8.   

    这些都做过了,都没用说log 3需要crash recovery,失败
      

  9.   

    非归档模式的恢复就是麻烦很多:现在数据库能到MOUNT状态吗?
      

  10.   

    yangqingdelphi() 效果不是一样的吗?
      

  11.   

    我也刚发生了一个这样的错误,
    现在有一个数据库,ORACLE817的,因为掉电,数据库不能启动。我把它的控制文件、数据文件、INIT.ora全部拿出来恢复数据库,我这样做:SVRMGRL>startup nomount;
    没有问题SVRMGRL>alter database mount;
    出现了这样的信息:
    ORA-00214: controlfile 'D:\ORACLE\ORADATA\ORACLE\CONTROL02.CTL' version 16798 in
    consistent with file 'D:\ORACLE\ORADATA\ORACLE\CONTROL01.CTL' version 16780
    我把init.ora里边的CONTROL01.CTL给去掉,这个错误就没有了。
    然后我又进行下一步,SVRMGRL>alter database open;
    又出现这样的错误:
    ORA-00314: log 3 of thread 1, expected sequence# 3990 doesn't match 3987
    ORA-00312: online log 3 thread 1: 'D:\ORACLE\ORADATA\ORACLE\REDO01.LOG'各位大侠,这个问题有没有人见过?该如何解决?
      

  12.   

    to: starbzj(bbb)  你的问题还没有解决吗?在用这个方法试:
      http://211.99.196.144:8090/forum1/frontshow/dispbbs.jsp?boardid=84&id=8525
      

  13.   

    哦,是你啊,你是不是zp_ccc老兄啊。
    我现在还在重新安装数据库环境。装完了再试一下。
      

  14.   

    如果只是一个控制文件坏了,可以更改启始参数文件中的Control_Files参数,将损坏的控制文件删掉,重起数据库即可。