不小心删除了数据文件undo_small.dbf,现在数据库无法启动
SQL> startup
ORACLE instance started.Total System Global Area 784334848 bytes
Fixed Size 1282656 bytes
Variable Size 201330080 bytes
Database Buffers 578813952 bytes
Redo Buffers 2908160 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: '/export/home/oracle/oradata/test/undo_small.dbf'尝试着删除undo表空间,出现如下错误信息
SQL>drop tablespace undotbs1;
drop tablespace undotbs1
*
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU1$' found,terminate dropping tablespaceSQL>select segment_name,status,tablespace_name from dba_rollback_segs where status='NEED RECOVERY';
SEGMENT_NAME STATUS TABLESPACE_NAME
--------------------------------------------------------------------------------
_SYSSMU1$ NEEDS RECOVERY UNDOTBS1
_SYSSMU2$ NEEDS RECOVERY UNDOTBS1
_SYSSMU3$ NEEDS RECOVERY UNDOTBS1
......
_SYSSMU37$ NEEDS RECOVERY UNDOTBS1
_SYSSMU38$ NEEDS RECOVERY UNDOTBS1Oracle版本为10.2.0.2.0,有什么办法启动数据库吗?

解决方案 »

  1.   

    1. 修改init.ora
    undo_management=MANUAL
    undo_retention=10800
    undo_tablespace=undo01
    rollback_segments='SYSTEM'
    2. 启动数据库
      SQL> startup pfile = '你修改的那个init.ora';
    3. alter database '/oracle/app/oracle/oradata/orcl/undo01.dbf' offline;
    4. alter database datafile '/oracle/app/oracle/oradata/orcl/undo01.dbf' offline drop;
    5. alter database open;
    6. create spfile from pfile;
    7. drop tablespace undo01;
    8. create undo tablespace undotbs1 datafile '/oracle/app/oracle/oradata/orcl/undo01.dbf' size 200M autoextend on;
    9. alter system set undo_management=auto scope=spfile;
    10. shutdown immediate.
    11. startup force.
      

  2.   


    操作系统是Solaris,init.ora文件在哪个目录下?
      

  3.   

    修改了init.ora,然后启动时出错:SQL> startup pfile='init.ora'
    ORA-00371: not enough shared pool memory, should be atleast 62198988 bytes
      

  4.   

    运行这句alter database datafile 6 offlile;把该数据文件下线,就能打开了.alter database open;自己再新建表空间。
      

  5.   

    如果系统另外没有undo表空间的话 
    需要alter system set undo_management=manual scope=spfile;
    然后shutdown immediate;
    然后  startup mount;
    alter database datafile 6 offline drop ;
    alter database open;
    create undo tablespace undonew datafile '' size 100m autoextend on;
    alter system set undo_tablespace=undonew scope=spfile;
    alter system set undo_management=auto scope=spfile;
    shutdown immediate;
    startup;试试。。
      

  6.   

    你现在需要的就是  先修改 undo_management =manual ;然后看看 startup pfile='' 看看能否启动。