前两天由于误删了回滚表空间UNDOTBS1的数据文件undotbs01.dbf,导致数据库无法正常的startup和shutdown,也无法正常登陆。于是需要重新做undo,在重新做的过程中,需要先drop之前的表空间undotbs1,遇到了ORA-01548: active rollback segment ‘_SYSSMUxx_xxxx’ found这个问题。
问题:
解决方法:
首先我试着删除 '_SYSSMU1_549157406$',但是报错如下
实际上,这个回滚segement根本就不存在。
那么怎么来解决这个问题?
1. 创建一个新的配置文件init.ora,使用它来启动oracle.
2. 停止oracle服务
3. 修改init.ora,增加以下内容:
4. 重新启动orale,删除表空间undobts1
又出现了同样的问题,只不过问题从'_SYSSMU1_2105732817$'变为了'_SYSSMU2_236277690$',以此类推,参照第3步,在init.ora中添加相应的内容,反复重启oracle删除表空间,我的是报了10次错,最终添加的内容如下:
5. 删除表空间undotbs1成功
6.创建新的表空间undotbs1
7. 将undotbs1重新设置为回滚表空间
8. 检查undo参数是否正常
问题:
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.删除之前建立的临时回滚表空间.
如需转载,请注明出处。