oracle undo表空间清理

oracle undo表空间爆满处理

产生问题的原因主要以下两点:
  1. 有较大的事务量让Oracle Undo自动扩展,产生过度占用磁盘空间的情况
  2. 有较大事务没有收缩或者没有提交所导制; 说明:本问题在ORACLE系统管理中属于比较正常的一现象,日常维护多注意对磁盘空间的监控。
UNDO表空间介绍

UNDO表空间用于存放UNDO数据,当执行DML操作(INSERT,UPDATE和DELETE)时,oracle会将这些操作的旧数据写入到UNDO段。
在oracle9i之前,管理UNDO数据时使用(Rollback Segment)完成的。
从oracle9i开始,管理UNDO数据不仅可以使用回滚段,还可以使用UNDO表空间.因为规划和管理回滚段比较复杂。
所有oracle database 10g已经完全丢弃用回滚段.并且使用UNDO表空间来管理UNDO数据。

具体处理流程:
  1. 找出UNDO表空间的路径及大小
select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1';
  1. 检查UNDO Segment状态
select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
  1. 创建新的临时UNDO表空间
create undo tablespace undotbs2 datafile '+DATA/orcl/datafile/undotbs2' size 10M autoextend on;
  1. 切换UNDO表空间为新的UNDO表空间
alter system set undo_tablespace=undotbs2 scope=both;
  1. 验证当前数据库的还原表空间
show parameter undo
  1. 等待原UNDO表空间所有UNDO SEGMENT OFFLINE
select t.segment_name,t.tablespace_name,t.segment_id,t.status from dba_rollback_segs t;
  1. 删除原UNDO表空间
drop tablespace undotbs1 including contents and datafiles;
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值