日期:2014-05-16  浏览次数:20511 次

解决Oracle 表空间UNDOTBS1太大的问题

UNDOTBS1是一个回滚表空间,随着数据库的使用,默认会自动扩展。当它增大到一定程度,占用了过多的磁盘空间时,就需要进行清理了。下面就在2种操作系统下讲解清理该表空间的方法。


一、环境:windows xp;数据库:Oracle 9i。


在windows系统下,无法完全使用命令行方式操作数据库。具体步骤如下:


1. 启动PLSQL工具连接数据库,登录信息:system/password@DBSID as sysdba;新建一个command window;


2. 创建一个新的回滚段表空间:


SQL> create undo tablespace undotbs2 datafile '%oracle_home%/oradata/DBSID/undotbs02.dbf' size 500M;


Tablespace created.


3. 将回滚段指向新的表空间:


SQL> alter system set undo_tablespace=undotbs2 scope=spfile;


System altered.


4. 重新启动数据库:


在windows环境下,该步无法使用命令行操作;


在系统服务项中,重启oracle的关键服务:


OracleOraHome92TNSListener


OracleServiceDBSID


5. PLSQL重新连接数据库:system/password@DBSID as sysdba;新建command window;


Oracle 9i默认自动管理回滚段,为了防止其无限制增长,可以将其设为人工管理:


SQL> alter system set undo_management =MANUAL scope=spfile;


System altered.


(本人建议:还是让数据库自动管理回滚段比较好,可以定期清理该表空间)


6. 重新启动数据库(参照步骤4)


7. 删除原来的回滚空间:


PLSQL重新连接数据库:system/password@DBSID as sysdba;新建command window;


SQL> drop tablespace undotbs1 including contents and datafiles;


Tablespace dropped.


该步骤只能删除数据库对该空间的管理信息,要想完全删除该表空间文件,需要到相应的目录下手动删除;


8. 结束


二、环境:linux;数据库:Oracle 9i。


1. 登陆到数据库

oracle@suse:~> sqlplus '/as sysdba'

SQL*Plus: Release 9.2.0.4