由於沒有準備充分的磁盤空間也沒看清imp的參數,導致在導入數據過程中出現undo表空間不足而進程死鎖。殺死進程後想刪除undo表空間,發現undo表空間仍 有online狀態,再細查
SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS
發現有幾個屬於undotbs1的系統回滾段(_SYSSMU2$)狀態是online的,所以無法drop掉undotbs1空間。
系統回滾段無法用ALTER ROLLBACK SEGMENT 名字 offline停掉。
上網一查,原來還是有辦法的。
處理過程
1 create undo tablespace undotBS2 datafile '/..../...../UNDODOTBS2.DBF' size 100m;
alter system set undo_tablespace=undotBS2;
drop tablespace undotbs1 including contents;(進行這部操作的時候會報下面的錯):
ORA-01548: 已找到活動回退段'_SYSSMU1$',終止刪除表空間
2 修改文件/opt/..../admin/pfile/init.ora.162007221035,如下:
undo_management=manual
undo_retention=10800
undo_tablespace=undotBS2
_CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)
3 重啓服務
shutdown immediate
startup pfile='/opt/..../admin/pfile/init.ora.421200715439'
4 刪除表空間
drop tablespace undotbs1 including contents and datafiles;
create undo tablespace undotBS1 datafile ......................
5 修改init.ora.162007221035恢復原狀即可
6重啓服務
shutdown immediate
startup
7alter system set undo_tablespace=undotBS1