回滚表空间处理
回滚表空间处理(转载)
Oracle中当读写大批量数据时候,如果不及时提交任务,会导致回滚表空间的迅速增加,回滚表空间会一直增大,而不自动释放它占用的硬盘空间,(当然,几个小时后,系统会自动释放它自身的占用率,但不会释放它所占用的硬盘空间),所以要手动去解决。
1、替换回滚表空间方法,
思路:先新建,再重新定向到新建的回滚表空间,然后删除掉原来的回滚表空间
undo表空间undotbs一直增加且不能释放空间,重建之(先重建后删除)
-- 创建备用undo表空间
create undo tablespace newundotbs datafile '$ORA_DATA/newundotbs01.dbf' size 1000m
/ 切换undo表空间,使系统使用新建的回滚表空间
alter system set undo_tablespace=newundotbs scope=spfile
/关闭服务
shutdown immediate
/重新启动服务
startup
/
-- 删除掉原来的混滚表空间
drop tablespace undotbs including contents and datafiles
/
-- 创建原undo表空间
create undo tablespace undotbs datafile '$ORA_DATA/undotbs01.dbf' size 1000m
/
-- 切换undo表空间
alter system set undo_tablespace=undotbs scope=spfile
/
-- 关闭重起并把备用undo表空间drop
shutdown immediate
/
startup
/
drop tablespace newundotbs including contents and datafiles
/
2、回滚段无法删除的处理
ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间 的解决办法
出现原因:
在oracle的服务期控制台直接进行了数据文件的脱离的操作,提示如下:ORA-01145:除非启用了介质恢复,否则不允许紧急脱机
ALTER DATABASE
DATAFILE 'E:"ORACLE"ORADATA"SHAOMF"UNDOTBS01.DBF' OFFLINE DROP;
症状:
删除回滚段表空间(drop tablespace undotbs1 including contents)的时候报下面的错
ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间
处理过程:
1 create undo tablespace undotBS2 datafile 'E:"oracle"oradata"shaomf"UNDOTBS2.DBF' size 100m;
alter system set undo_tablespace=undotBS2;
drop tablespace undotbs1 including contents;(进行这部操作的时候会报下面的错):
ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间
2 修改文件E:"oracle"admin"shaomf"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 启动服务
startup pfile=E:"oracle"admin"shaomf"pfile"init.ora.162007221035
4 删除表空间
drop tablespace undotbs1 including contents;
create undo tablespace undotBS1 datafile 'E:"oracle"oradata"shaomf"UNDOTBS01.DBF' size 200m;
drop tablespace undotBS2 including contents;
5 修改init.ora.162007221035,如下:
undo_management=auto
undo_retention=10800
undo_tablespace=undotBS1
#_CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)
6 关闭服务,并且用下面的命令重新启动服务
startup pfile=E:"oracle"admin"shaomf"pfile"init.ora.162007221035
7 拷贝spfile文件,原先的spfile文件做好备份
create spfile='E:"oracle"ora92"database"SPFILESHAOMF.ORA' FROM pfile='E:"oracle"admin"shaomf"pfile"init.ora.162007221035';
8 关闭服务器,重新启动服务器,即可。
select segment_name,status,tablespace_name from dba_rollback_segs;
SEGMENT_NAME STATUS TABLESPACE_NAME
------------------------------ ---------------- ------------------------------
SYSTEM ONLINE SYSTEM
_SYSSMU1$ ONLINE UNDOTBS1
_SYSSMU2$ ONLINE UNDOTBS1
_SYSSMU3$ ONLINE UNDOTBS1
_SYSSMU4$ ONLINE UNDOTBS1
_SYSSMU5$ ONLINE UNDOTBS1
_SYSSMU6$ ONLINE UNDOTBS1
_SYSSMU7$ ONLINE UNDOTBS1
_SYSSMU8$ ONLINE UNDOTBS1
_SYSSMU9$ ONLINE UNDOTBS1
_SYSSMU10$ ONLINE UNDOTBS1
已选择11行。