win2003server下 oracle 9i 突然无法启动(可能是晚上断电引起的)。用普通用户登陆时提示 ORA-01033: ORACLE initialization or shutdown in progress
dba 可以登陆,但是,无法操作任何资源。后来在查找错误时突然发现 REDO01.LOG 坏了,无法copy 使用命令行操作步骤如下
sqlplus /nolog
conn /as sysdbashutdown immediate 提示信息为:
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。startup 提示信息为:已经卸载数据库。
ORACLE 例程已经关闭。SQL> startup
ORACLE 例程已经启动。Total System Global Area  143727516 bytes
Fixed Size                   453532 bytes
Variable Size             109051904 bytes
Database Buffers           33554432 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项alter database open resetlogs; 提示信息为:
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\ORASRCCS\SYSTEM01.DBF'
请问,在这种情况下,我的数据是否还能恢复回来?

解决方案 »

  1.   

    如果是很重要的数据,你的redolog只存了一份, 是很失败的做法.startup mount;
    recover database until cancel;
    alter database open resetlogs;这样你的数据库应该可以启动出来, 不过数据是否有丢失,就看你运气了 (就是数据库down之前, oracle有没有把数据全部写到硬盘上.  你只有一份online-redolog, 如果损失了最新的数据是还原不了的)
      

  2.   

    谢谢,我按照你的方法做了,可是当我执行recover database until cancel时,出现问题!SQL> recover database until cancel;
    ORA-00283: 恢复会话因错误而取消
    ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成这是什么原因呢?
      

  3.   

    如果您的REDO02.LOG和REDO03.LOG这两个文件完好的话,可以利用这两个文件之一启动数据库。
    也可以拷贝这两个文件之一,将REDO01.LOG覆盖在启动数据库。下面是方法:
    connect as/sysdba
    shutdown
    将REDO02.LOG或REDO03.LOG移动至REDO01.LOG的位置
    startup mount( 启动但不打开数据库)
    alter database rename file
    'd:\oracle\REDO02.LOG'
    to
    'C:\ORACLE\REDO01.LOG'
    (假设您的REDO02.LOG在D盘中,文件路径根据您的机器改变,这里只是具个例子)
    alter database open 
    alter database open
      

  4.   

    以上的方法根本不行,因为你的system datafile 出了问题。必须用非常规的方法才能解决!
    但你有可能做不到100%的恢复,根据经验可能会丢失一点东西,不过丢失的东西应该不会影响你的系统的完整性!