-- clear undo begin
alter system set undo_tablespace = '';
DROP TABLESPACE "UNDOTBS" INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS;
CREATE UNDO TABLESPACE "UNDOTBS" 
    DATAFILE '/oracle/oradata/test/UNDOTBS.dbf' SIZE 6000M;
alter system set undo_tablespace = 'UNDOTBS';
-- clear undo end

解决方案 »

  1.   

    我是在oracle9iR2版本的,linux操作系统上
      

  2.   

    谢谢,但还是不行,可能是undo_tablespace这个参数8.17不认识。
      

  3.   

    如果是8.1.7/Unix的话,可以直接修改oralce的配置文件:init$sid.ora中关于rollback的部分(减少segments的个数)。rollback_segments = ( RBS0, RBS1, RBS2, RBS3, RBS4, RBS5, RBS6, RBS7, RBS8, RBS9, RBS10, RBS11, RBS12, RBS13, RBS14, RBS15, RBS16, RBS17, RBS18, RBS19, RBS20,RBS21, RBS22, RBS23, RBS24 )如只保留RBS0-RBS10, 每个oracle默认的segment大小好象是15M.用sql*plus 进数据库,把原来的计划不用的segments drop 掉。重新启动数据库就可以了。
      

  4.   

    我试验了一下,所有的回滚段都无法DROP调,返回ORA-01545:指定的回退段不可用。我试着先把这些回退段OFFLINE,倒是没有报错,但再看它的状态还是Online.
    我把数据库重起了,发现回退段的表空间的使用率还是100%,不是说回退段事务结束后会自动释放空间的吗?