ITPub博客

首页 > 数据库 > 数据库开发技术 > 通过表空间切换,回收undo表空间

通过表空间切换,回收undo表空间

原创 数据库开发技术 作者:heroqsx 时间:2007-11-15 09:44:01 0 删除 编辑

在网上搜索的信息基础上加工而来,非原创。

[@more@]
UNDO表空间越来越大,产生问题的原因主要以下两点:
1. 有较大的事务量曾经让Oracle Undo自动扩展
2. 有较大事务长时间没有提交曾经让Oracle Undo自动扩展
UNDO表空间变大后,把空间回收比较麻烦,Shrink命令经常不成功,但是可以通过切换UNDO表空间的方法,回收磁盘空间

解决步骤:
1. 启动SQLPLUS,并用sys登陆到数据库
2. 查找数据库的UNDO表空间名
show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS2
3. 检查数据库UNDO表空间占用空间情况以及数据文件存放位置
select tablespace_name, sum(bytes/1024/1024) "SIZE(M)"
from dba_data_files
where tablespace_name = 'UNDOTBS2'
group by tablespace_name;

4. 查看回滚段的使用情况,哪个用户正在使用回滚段的资源,一般停掉业务系统,重新启动数据库后操作比较好
select s.username, u.name
from v$transaction t,v$rollstat r, v$rollname u,v$session s
where s.taddr=t.addr
and t.xidusn=r.usn
and r.usn=u.usn
order by s.username;
5. 创建新的UNDO表空间,并设置自动扩展;
create undo tablespace undotbs1
datafile '/oradata/oradata/ddptest/UNDOTBS1.dbf' size 1000m autoextend on next 800m maxsize unlimited;
6. 更改spfile配置;
alter system set undo_tablespace=undotbs1 scope=both;
7. 重新启动数据库, 删除原有的UNDO表空间;
drop tablespace undotbs2 including contents;
8. 册除原UNDO表空间的数据文件,回收磁盘空间
#rm $ORACLE_BASE/oradata/$ORACLE_SID/undotbs02.dbf

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/136097/viewspace-982487/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    64
  • 访问量
    71428