Pages

Sunday, June 27, 2021

Drop Undo Tablespace

After switch from UNDO Tablespace UNDOTBS1 to UNDOTBS2, UNDOTBS2 Tablespace is still exists.
Need to drop it manually.

After dropping UNDOTBS2, database cannot be started
WTF...

Steps and how to fix

COL TABLESPACE_NAME FOR A30
COL STATUS FOR A20
SELECT tablespace_name, status, count(*) 
FROM DBA_ROLLBACK_SEGS 
GROUP BY tablespace_name, status;

TABLESPACE_NAME           STATUS                 COUNT(*)
------------------------- -------------------- ----------
UNDOTBS1                  ONLINE                       41
SYSTEM                    ONLINE                        1
UNDOTBS2                  OFFLINE                       0

In detail:
SET LINESIZE 160
SELECT owner, segment_name, tablespace_name, status 
FROM DBA_ROLLBACK_SEGS ORDER BY 3;
SYS    SYSTEM                SYSTEM  ONLINE
PUBLIC _SYSSMU42_3536664823$ UNDOTBS ONLINE
PUBLIC _SYSSMU43_1783674736$ UNDOTBS ONLINE
PUBLIC _SYSSMU44_629285899$  UNDOTBS ONLINE
PUBLIC _SYSSMU45_2404285950$ UNDOTBS ONLINE
PUBLIC _SYSSMU46_132405334$  UNDOTBS ONLINE


DROP TABLESPACE UNDOTBS2 INCLUDING CONTENTS AND DATAFILES;

At this point oracle crashed and could no be started.
Upon startup, this error is coming:

ORA-00603: ORACLE server session terminated by fatal error
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-30012: undo tablespace 'UNDOTBS2' does not exist or of wrong type
Incident details in: /software/oracle/diag/rdbms/igt/igt/incident/incdir_2131503

How to fix
Option 1. The proper solution:
CREATE PFILE FROM SPFILE
Edit PFILE so that oracle is aware of the correct tablespace
Start oracle from PFILE


Option 2. The quick solution:
make a copy from spfile
edit the binary file spfile
Replace from 
*.undo_tablespace='UNDOTBS2'
to 
*.undo_tablespace='UNDOTBS1'

Start oracle

Now it starts without an error

No comments:

Post a Comment