删除回滚表空间时出错ORA-01548: active rollback segment ‘_SYSSMUxx_xxxx’ found

在尝试删除Oracle数据库的回滚表空间时遇到错误:ORA-01548,提示活跃的回滚段 '_SYSSMUxx_xxxx' 被找到。本文档探讨了这个问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前两天由于误删了回滚表空间UNDOTBS1的数据文件undotbs01.dbf,导致数据库无法正常的startup和shutdown,也无法正常登陆。于是需要重新做undo,在重新做的过程中,需要先drop之前的表空间undotbs1,遇到了ORA-01548: active rollback segment ‘_SYSSMUxx_xxxx’ found这个问题。
问题:

SQL> drop tablespace undotbs1 including contents and datafiles;
drop tablespace undotbs1 including contents and datafiles
*
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU1_549157406$' found, terminate
dropping tablespace 

解决方法:

首先我试着删除 '_SYSSMU1_549157406$',但是报错如下

SQL> drop rollback segment '_SYSSMU1_549157406$';
drop rollback segment '_SYSSMU1_549157406$'
                      *
ERROR at line 1:
ORA-02175: invalid rollback segment name

实际上,这个回滚segement根本就不存在。

SQL> select * from v$rollname ; 


       USN NAME
---------- ------------------------------
0 SYSTEM

那么怎么来解决这个问题?

1. 创建一个新的配置文件init.ora,使用它来启动oracle.
2. 停止oracle服务

SQL> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.

3. 修改init.ora,增加以下内容:

*.undo_management='MANUAL'
*.undo_retention=1800
*.undo_tablespace='UNDOTBS3'
*._offline_rollback_segments=_SYSSMU1_2105732817$

4. 重新启动orale,删除表空间undobts1

SQL> drop tablespace undotbs01 including contents and datafiles;
drop tablespace undotbs01 including contents and datafiles
*
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU2_236277690$' found, terminate dropping tablespace

又出现了同样的问题,只不过问题从'_SYSSMU1_2105732817$'变为了'_SYSSMU2_236277690$',以此类推,参照第3步,在init.ora中添加相应的内容,反复重启oracle删除表空间,我的是报了10次错,最终添加的内容如下:

*._offline_rollback_segments=(_SYSSMU1_2105732817$,_SYSSMU2_236277690$,
_SYSSMU3_1467598243$,_SYSSMU4_2463326219$,
_SYSSMU5_912335097$,_SYSSMU6_549157406$,
_SYSSMU7_1907610447$,_SYSSMU8_173312413$,
_SYSSMU9_822850975$,_SYSSMU10_1481240185$)

5. 删除表空间undotbs1成功

SQL> drop tablespace undotbs1 including contents and datafiles;
Tablespace dropped.

6.创建新的表空间undotbs1

SQL> create undo tablespace undotbs1 datafile '/home/oracle/app/oracle/oradata/bus/undotbs01.dbf' size 200m autoextend on;


Tablespace created.


 7. 将undotbs1重新设置为回滚表空间
SQL> alter system set undo_tablespace=undotbs1;


System altered.


8. 检查undo参数是否正常
SQL> show parameter undo;


NAME     TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management     stringAUTO
undo_retention     integer900
undo_tablespace     stringUNDOTBS1


9.删除之前建立的临时回滚表空间.

如需转载,请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值