在undo自动表空间模式下切换新的undo表空间后都需要将老的undo表空间给drop,
可是由于切换时由于活动事物并未完全结束,
于是导正drop旧的undo表空间时报“ORA-30013: 还原表空间 'UNDOTBS3' 当前正在使用中”的错误。
解决方法如下:
1.确认活动事物使用的回滚段编号
select xidusn from v$transaction;
select xidusn from v$transaction;
2.确认活动事物对应的sid和serial#
select a.sid,a.serial# from v$session a,v$transaction b
select a.sid,a.serial# from v$session a,v$transaction b
where a.taddr=b.addr;
3.使用alter system kill session命令杀掉相关活动会话
4.offline第1步查询出来的回滚段
这一步需要修改隐含参数_smu_debug_mode,将其值改为4,这一步的目的是使得在undo自动模式下可以进行undo手动模式的相关操作,比如offline回滚段或删除回滚段。
接着执行alter rollback segment "_SYSSMUN$" offline;(其中N为第一步查询出的回滚段编号)
5.最后即可正常执行drop undo tablespace命令。
总结:这里的关键是先要保证旧的表空间中的未决事物全部结束,所以如果不手动kill相关活动会话的话,直接对活动的回滚段进行offline和drop等操作都会报错。