Sunday, August 3, 2008

ORA-01548: active rollback segment '_SYSSMU1$' found, terminate dropping tablespace

Problem Description
Drop undo tablespace fails with error Ora-01548 .
SQL> drop Tablespace UNDOTBS;
drop Tablespace UNDOTBS
*
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU1$' found, terminate dropping
tablespace

Cause of The Problem
An attempt was made to drop a tablespace that contains active rollback segments.

Solution of The Problem
In order to get rid of this error you have to follow following steps.
1)Create pfile if you started with database with spfile.
SQL>Create PFILE from SPFILE;

2)Edit pfile and set undo management to manual.
undo_management = manual

3)Put the entries of the undo segments in the pfile by using the following statement in the pfile:

_offline_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,.....)

4)Mount the database using new pfile.
Startup mount pfile='fullpath to pfile'

5)Drop the datafiles,
sql>Alter Database datafile '&filename' offline drop;

6)Open the database.
sql>Alter Database Open;

7)Drop the undo segments,

sql>Drop Rollback Segment "_SYSSMU1$";
......
8)Drop Old undo tablespace.
sql>Drop Tablespace old_tablespace_name Including Contents;

9)Add the new undo tablespace.

10) Shutdown Immediate;

11) Change the pfile parameters back to Undo_management = AUTO and modify the parameter Undo_tablespace=new_undo_tablespace_name and remove the _offline_rollback_segments parameter.

12) Startup the Database.

Related Documents
How undo Space Allocation Works

The possible causes for Excessive Undo generation

Oracle: Undo vs Rollback Segment

4 comments:

  1. Though I like the easy method a lot better I continued to get the error when dropping the tablespace since there are transactions left in the RBS.

    ORA-01548: active rollback segment '_SYSSMU3$' found, terminate dropping tablespace

    ReplyDelete
  2. This saved my database, thanks. Gladly it was a TEST db but it was very visible just the same. Had the
    ORA-01548: active rollback segment '_SYSSMU1$' found, terminate dropping
    tablespace issue and this fixed it.

    thanks again!
    eom

    ReplyDelete
  3. This solution saved me to. I used select segment_name, status from dba_rollback_segs; to determine which _SYSSMUx$ segments were the trouble.

    ReplyDelete
  4. great success ! may your enemies swim in rectal fluids through eternity :)

    ReplyDelete