有备份没有,如果没有,参考如下办法
-----------------------------------
 数据库关闭,数据文件中有活动事务,没有可用备份 
一般造成这种原因的情况是采用了shutdown abort或其它原因异常关机(如断电)导致的。 
1、开启一个事务 
SQL> set transaction use rollback segment rbs0; 
Transaction set. 
SQL> insert into test (a) values (1); 
1 row created. 2、异常关闭 
SQL> shutdown abort; 
ORACLE instance shut down. 3、删除rbs的一个数据文件 
C:>del D:\Oracle\oradata\chen\rbs01. 4、修改INIT<sid>.ora 
rollback_segments=(system) 
添加_corrupted_rollback_segments=(rbs0,rbs1,rbs2……) 5、SQL>Startup mount 6、SQL>alter database datafile ’d:\oracle\oradata\t8i\rbs01.dbf’ offline drop; 
数据库已更改。 7、SQL>recover database ; 
完成介质恢复。 8、SQL>alter database open ; 
数据库已更改。 9、SQL>select * from v$rollname; 
       USN NAME 
----------------- --------------------- 
                0 SYSTEM 10、SQL>select segment_name,tablespace_name,status from dba_rollback_segs; 
SEGMENT_NAME TABLESPACE_NAME STATUS 
------------------------------ ------ ------------------------------------ 
SYSTEM SYSTEM ONLINE 
RBS0 RBS NEEDS RECOVERY 
RBS1 RBS NEEDS RECOVERY 
RBS2 RBS NEEDS RECOVERY 11、SQL>drop rollback segment rbs0; 
重算段已丢弃。 
     SQL>drop rollback segment rbs1; 
重算段已丢弃。 
     SQL>drop rollback segment rbs2; 
重算段已丢弃。 12、SQL>select segment_name,tablespace_name,status from dba_rollback_segs; 
SEGMENT_NAME TABLESPACE_NAME STATUS 
------------------------------ ------ ------------------------------------ 
SYSTEM SYSTEM ONLINE 13、SQL>drop tablespace rbs including contents; 
表空间已丢弃。 14、重建新的回滚表空间及回滚段,并联机。 15、SQL>shutdown abort 16、再修改INIT<sid>.ora 
rollback_segments=(rbs0,rbs1,rbs2) 
将_corrupted_rollback_segments=(rbs0,rbs1,rbs2)去掉。 17、SQL>startup 1、这种办法是万不得以的时候使用的方法,如果有备份,都建议从备份上进行恢复 
2、这种方法恢复的数据库,可能会引起数据库的数据错误 
3、恢复成功以后,建议exp/imp数据,并重新分析检查数据库 

解决方案 »

  1.   

    步骤 4、修改INIT<sid>.ora 中
    是在init文件中添加下列行么?
    rollback_segments=(system) 
    _corrupted_rollback_segments=(rbs0,rbs1,rbs2……) 
    如果是 那么segments=(填写什么呢?) 
    原来的回滚段数据文件叫做UNDOTBS01.DBF
      

  2.   

    如果数据库可以启动的话可以用如下命令
    SELECT segment_name,tablespace_name,owner,status FROM dba_rollback_segs;
    可现在查询不出segment的名称啊
      

  3.   

    在默认的启功init.ora中并没有rollback_segments的参数设置 没有指定使用了什么回滚段
    奇怪的是直接启动数据库时默认的使用已配置参数就会报错
    ORA-00600: 内部错误代码,参数: [733], [538969648], [pga heap], [], [], [], [], [
    ]
    这时我一定要指定一个初始化参数文件才可以继续 比如mount上之类的