使用select * from v$datafile发现数据文件aa.dbf的status字段值为Recover,enabled的字段值为disabled。而且aa.dbf中包含有segment:segs,查看segment的status值为recover,无法把它变成offline。快来帮帮我。

解决方案 »

  1.   

    http://www.oradb.net/err/error_007.htm
      

  2.   

    看下这个:
    1、最好做一个物理的库的全备
    2、使用sqlplus 启动库至mount
     sqlplus /nolog
     sql>connect internal
     sql>startup mount
    3、确保所有的数据文件都处于"END BACKUP"状态
     sql>set pages 0 feedback off lines 132
     sql>spool alter_df.sql
     sql>SELECT 'alter database datafile '||file_name||' END BACKUP;' from v$datafile;
     sql>spool off
     sql>@alter_df.sql
    4、试着打开数据库
     sql>alter database open;
     如数据库成功打开,余下的都不需要做了,到此为止
    5、如果你在打开时被要求进行恢复,使用"UNTIL CANCEL"这种进行恢复,然后再发出ALTER DATABASE OPEN RESETLOGS这个命令
      sql>recover database until cancel;
      sql>alter database open resetlogs;
    6、如果数据库仍不能打开,把库down掉
      sql>shutdown immediate
    7、在init<sid>.ora中加入如下参数
       _allow_resetlogs_corruption=TRUE
    8、执行如下语句
     sql>connect internal
     sql>startup mount
     sql>@alter_df.sql
     sql>alter database open
    9、如在alter database open时仍旧报错,使用until cancel恢复
     sql>recover database until cancel;
     sql>alter database open resetlogs;
    10、经过"9",数据库一定被打开了,数据库被打开后,马上执行一个full export
    11、down掉库,去掉_all_resetlogs_corrupt参数
    12、重建库
    13、import并完成恢复
    14、建议执行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;如果再不行,只能把这些数据文件OFFLINE掉SVRMGRL> connect internal;
    SVRMGRL> SHUTDOWN IMMEDIATE;   -- or NORMAL
    SVRMGRL> STARTUP MOUNT;
    SVRMGRL> alter database datafile '/u/ddd.dbf' offline drop;
    SVRMGRL> ALTER DATABASE OPEN ;