oracle undo表空间的清理

本文介绍了如何管理Oracle数据库中的UNDO表空间,包括查找路径和大小、检查状态、创建新表空间、切换表空间以及删除原有表空间。同时,解释了产生问题的原因以及UNDO表空间的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

找出UNDO表空间的路径及大小
SQL>  select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1';


检查UNDO Segment状态
SQL> select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;


创建新的临时UNDO表空间
可以在其它的磁盘空间临时创建还原表空间
SQL>create undo tablespace undotbs2 datafile '+DATA/orcl/datafile/undotbs2' size 10M autoextend on;


切换UNDO表空间为新的UNDO表空间
SQL> alter system set undo_tablespace=undotbs2 scope=both;


验证当前数据库的还原表空间
SQL> show parameter undo


等待原UNDO表空间所有UNDO SEGMENT OFFLINE
select t.segment_name,t.tablespace_name,t.segment_id,t.status from dba_rollback_segs t;


删除原UNDO表空间
SQL> drop tablespace undotbs1 including contents and datafiles;






如果需要规范数据库的表空间和路径,还原表空间名称undotbs1和路径不能改变,
可以安装刚才的步骤进行切换回来。
1、创建新的原来的UNDO表空间
可以在其它的磁盘空间临时创建还原表空间
SQL>create undo tablespace undotbs1 datafile '+DATA/orcl/datafile/undotbs1' size 10M autoextend on maxsize 3G;


2、切换UNDO表空间为新的UNDO表空间
SQL> alter system set undo_tablespace=undotbs1 scope=both;


3、验证当前数据库的还原表空间
SQL> show parameter undo


4、等待原UNDO表空间所有UNDO SEGMENT OFFLINE
select t.segment_name,t.tablespace_name,t.segment_id,t.status from dba_rollback_segs t;


5、删除UNDO2表空间
SQL> drop tablespace undotbs2 including contents and datafiles;


产生问题的原因主要以下两点:
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数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值