回滚表空间处理

回滚表空间处理(转载) 

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行。

posted @ 2009-02-06 15:02  solan3000  阅读(3512)  评论(0编辑  收藏  举报