UNDOTB2为undo表空间下面的为添加的扩展表空间 UNDO_TB3            D:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\ 
UNDO_TB5           E:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\ 
UNDO_TB2           D:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\ 
UNDOTBS01.DBF         E:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\
UNDO_TB31          E:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\ 
   
新建立一个UNDOTB3 undo表空间,切换undo表空间
切换UNDO表空间
• 可以从使用一个UNDO 表空间切换到使用另一个UNDO表空间。 • 一次只能将一个UNDO 表空间分配给某个数据库。 • 一个例程中可以存在多个UNDO 表空间,但只能有一个处于活动状态。 • 使用ALTER SYSTEM 命令,可以在各个UNDO 表空间之间进行动态切换。 ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTB3;
 删除UNDO表空间
• 使用DROP TABLESPACE 命令,可以删除UNDO 表空间。 DROP TABLESPACE UNDOTB2; • 某个UNDO 表空间只有在当前未由任何例程使用的时候才能被删除。 • 要删除活动的UNDO 表空间,请执行以下操作: – 切换到新的UNDO 表空间
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTB3;– 完成当前所有事务处理后,删除该表空间 要确定是否存在任何一个活动的事务处理,请使用以下查询:
 SQL> SELECT a.name,b.status 2 FROM v$rollname a, v$rollstat b 3 WHERE a.name IN ( SELECT segment_name 4 FROM dba_segments 5 WHERE tablespace_name = 'UNDOTBS‘ ) 6 AND a.usn = b.usn; 
查询结果为空。状态为PENDING OFFLINE 的某个还原段仍包含活动的事务处理。如果查询没有返回任 何行,则表明所有事务处理均已完成,并且可以使用以下命令删除该表空间。 SQL> DROP TABLESPACE UNDOTB2;删除提示    无法删除 undotb2下面的扩展表空间 UNDO_TB2           ORA-01548: 已找到活动回退段 '_SYSSMU6$', 终止删除表空间 求助如何:删除 UNDOTB2  在切换undotb3是 已经把undotb2状态变为挂起 offline

解决方案 »

  1.   

    -- 重启动一下数据库,再删除原来的undo 表空间,这样试试呢?
      

  2.   

    1、如果没有事务,可以过undo_retention指定的时间来删除。
    2、如果不能删除,说明还有活动事务在上面,找到相应的事务,提交或回滚。
    3、如果还不能删除,重启数据库再删除。
      

  3.   

    问题描述:ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间 解决办法该问题已经解决.解决步骤如下:
     验证过程:
    1 查看所有回滚段信息:
    select segment_name,status,tablespace_name from dba_rollback_segs;
    SEGMENT_NAME STATUS TABLESPACE_NAME
    ------------------------------ ---------------- ------------------------------
    SYSTEM ONLINE SYSTEM
    _SYSSMU1$ NEEDS RECOVERY UNDOTBS1
    _SYSSMU2$ NEEDS RECOVERY UNDOTBS1
    _SYSSMU3$ NEEDS RECOVERY UNDOTBS1
    _SYSSMU4$ NEEDS RECOVERY UNDOTBS1
    _SYSSMU5$ NEEDS RECOVERY UNDOTBS1
    _SYSSMU6$ NEEDS RECOVERY UNDOTBS1
    _SYSSMU7$ NEEDS RECOVERY UNDOTBS1
    _SYSSMU8$ NEEDS RECOVERY UNDOTBS1
    _SYSSMU9$ NEEDS RECOVERY UNDOTBS1
    _SYSSMU10$ NEEDS RECOVERY UNDOTBS1
    .....共计50行已选择50行。
    说明是有问题的。--------------
    处理过程
    下面可以为系统创建新的UNDO表空间,并实现切换:SQL>create undo tablespace UNDOTBS2 datafile 'D:oracleoradataPS30710UNDOTBS2.DBF' size 100m;
    alter system set undo_tablespace=undotBS2;
    drop tablespace undotbs1 including contents;(进行这部操作的时候会报下面的错):
    ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间2 修改文件init.ora.162007221035,如下:
    undo_management=manual
    undo_retention=10800
    undo_tablespace=undotBS2
    _CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)检查系统的回滚段信息,发现UNDOTBS1中的所有回滚段都需要恢复。在没有备份的情况下,只能尝试使用隐含参数将数据库打开,不过这个过程会破坏数据库的一致性,而且可能造成数据库出现逻辑错误。采用下面的方法打开数据库后,应该马上执行EXP备份,重建数据库后,再导入。下面开始尝试恢复数据库,首先创建PFILE,并关闭数据库:SQL> CREATE PFILE='F:INITTEST.ORA' FROM SPFILE;
    FONT>文件已创建。SQL> SHUTDOWN IMMEDIATE数据库已经关闭。已经卸载数据库。
    ORACLE 例程已经关闭。手工编辑PFILE,修改UNDO_MANAGEMENT为MANUAL,并添加隐含参数--我的添加了50个
    _OFFLINE_ROLLBACK_SEGMENTS=(_SYSSMU1$,_SYSSMU2$,……_SYSSMU10$):*.undo_management='MANUAL'
    _offline_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)下面重起数据库:SQL> STARTUP startup pfile='D:oracleadminPS30710pfileinit.ora.421200715439'
    ORACLE 例程已经启动。Total System Global Area 76619308 bytes
    Fixed Size 454188 bytes
    Variable Size 50331648 bytes
    Database Buffers 25165824 bytes
    Redo Buffers 667648 bytes数据库装载完毕。数据库已经打开。【由于设置了隐含参数,现在可以删除回滚段了:SQL> DROP ROLLBACK SEGMENT "_SYSSMU1$";回退段已删除。SQL> DROP ROLLBACK SEGMENT "_SYSSMU2$";回退段已删除。SQL> DROP ROLLBACK SEGMENT "_SYSSMU3$";回退段已删除。SQL> DROP ROLLBACK SEGMENT "_SYSSMU4$";回退段已删除。SQL> DROP ROLLBACK SEGMENT "_SYSSMU5$";回退段已删除。SQL> DROP ROLLBACK SEGMENT "_SYSSMU6$";回退段已删除。SQL> DROP ROLLBACK SEGMENT "_SYSSMU7$";回退段已删除。SQL> DROP ROLLBACK SEGMENT "_SYSSMU8$";回退段已删除。SQL> DROP ROLLBACK SEGMENT "_SYSSMU9$";回退段已删除。SQL> DROP ROLLBACK SEGMENT "_SYSSMU10$";回退段已删除。下面就可以删除UNDOTBS1表空间了:-----我的直接把UNDOTB01去掉,改变后缀 重启后没有报错,***********************************************
    下面的表为UNDOTB2的原扩展表空间UNDO_TB3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\ 
    UNDO_TB5 E:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\ 
    UNDO_TB2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\ 
    UNDOTBS01.DBF E:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\
    UNDO_TB31 E:\ORACLE\PRODUCT\10.2.0\ORADATA\TAXDEV\ 
       
    ***************************************************SQL> DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;表空间已丢弃。表空间删除后,通过重起来去掉加载的隐含参数。至此,恢复操作告一段落:SQL> SHUTDOWN IMMEDIATE数据库已经关闭。已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> STARTUP
    ORACLE 例程已经启动。Total System Global Area 76619308 bytes
    Fixed Size 454188 bytes
    Variable Size 50331648 bytes
    Database Buffers 25165824 bytes
    Redo Buffers 667648 bytes数据库装载完毕。数据库已经打开。
    SQL> SHOW PARAMETER UNDO
     好了 ,该问题已经解决,方法是加入隐含参数修改init 。。