解决undo 表空间过大导致磁盘空间不足的问题
undo表空间不断扩大问题的原因:1有较大的事务量让oracle undo 自动扩展,产生过度占有磁盘空间的情况。2有较大事务没有收缩或者没有提交所导致。
1.查看还原表空间所在磁盘是否使用率过高,及linux 系统哪个磁盘处于比较空闲的状态
:$df -lh
2.在oracle 数据库中查看所有表空间的占用率:
SQL> SELECT Total.name "Tablespace Name",
2 nvl(Free_space, 0) Free_space,
3 nvl(total_space-Free_space, 0) Used_space,
4 total_space
5 FROM
6 (select tablespace_name, sum(bytes/1024/1024) Free_Space
7 from sys.dba_free_space
8 group by tablespace_name
9 ) Free,
10 (select b.name, sum(bytes/1024/1024) TOTAL_SPACE
11 from sys.v_$datafile a, sys.v_$tablespace B
12 where a.ts# = b.ts#
13 group by b.name
14 ) Total
15 WHERE Free.Tablespace_name(+) = Total.name
16 ORDER BY Total.name
17 /
星期二 5月 29 第 1
Space Usage for Database in Meg
EXAMPLE 21.25 78.75 100
STAGING 1.9375 1.0625 3
SYSAUX 35.4375 524.5625 560
SYSTEM 3.125 686.875 690
UNDOTBS1 194.375 85.625 280
USERS .9375 4.0625 5
SQL>
SQL> tti off
SQL>
查询undo表空间的路径
sql>select file_name ,bytes/1024/1024
from dba_data_files
where tablespace_name like 'UNDOTBS1';
3.检查还原表空间的segment的状态的信息:
sql>select usn,xacts,rssize/1024/1024/1024,
hwmsize/1024/10244/1024, shrinks
from v$rollstat order by rssize;
0 0 .000358582 .000035844 0
1 0 .002067566 .000206676 0
5 0 .002067566 .000206676 0
6 0 .002067566 .000206676 0
10 0 .002067566 .000206676 0
4 0 .002067566 .000206676 0
9 0 .003105164 .000310395 0
8 0 .004020691 .000401912 0
7 0 .005973816 .000597148 0
3 0 .022575378 .002256656 0
2 0 .036552429 .003653816 0
这表示该还原表中还存在11个回滚对象,及数据库的历史数据。
4. 创建新的还原表空间。
sql>create undo tablespace undotbs2
datafile 'F:\ORACLE11GR2\ORADATA\ORCL\UNDOTBS02.DBF'
size 10m autoextend on maxsize 1GB;
5.在oracle数据库中把默认的还原表空间切换成新建的还原表空间undotbs2
sql>alter system set undo_tablespace=undotbs2 scope=both ;
6.验证当前数据库使用的还原表空间是否为新建的还原表空间:
sql>show parameter undo
7.等待旧的还原表空间所有的数据变成脱机状态(undo segment offline):
sql>select t.segment_name , t.tablespace_name, t.segment_id, t.status
from dba_rollback_segs t;
SYSTEM SYSTEM 0 ONLINE
_SYSSMU10_3176102001$ UNDOTBS1 10 ONLINE
_SYSSMU9_1126410412$ UNDOTBS1 9 ONLINE
_SYSSMU8_1557854099$ UNDOTBS1 8 ONLINE
_SYSSMU7_137577888$ UNDOTBS1 7 ONLINE
_SYSSMU6_1834113595$ UNDOTBS1 6 ONLINE
_SYSSMU5_1018230376$ UNDOTBS1 5 ONLINE
_SYSSMU4_2369290268$ UNDOTBS1 4 ONLINE
_SYSSMU3_991555123$ UNDOTBS1 3 ONLINE
_SYSSMU2_2082490410$ UNDOTBS1 2 ONLINE
_SYSSMU1_1518548437$ UNDOTBS1 1 ONLINE
上面对应的回滚段均为 offline 时即可干掉 之前的undo表空间了
sql>drop tablespace undotbs1 including contents and datafiles;
分享到:
相关推荐
比较深入浅出的描述了基于oracle10g/11g的UNDO表空间的管理
oracle 收缩undo表空间,需要收缩Undo表空间时特别有用。
演示如何收缩Oracle数据库的undo表空间
解决临时表空间过大问题 以及实现方法。脚本
oracle Undo表空间管理,oracle 学习人员必看的不可缺少的资料。
undo 表空间利用率 处理 事务 回滚等介绍 以及如何切换undo表空间
undo表空间恢复
Oracle释放过度使用的Undo表空间,脚本
oracle 9i UNDO表空间数据文件丢失恢复得全过程。。
地震前兆Oracle数据库UNDO表空间持续增长修复.pdf
oracle 数据库的 undo表空间管理 全面分析介绍
Oracle中,当Temp和Undo表空间无限增大时,回收这部分空间就是个问题
ORACLE的UNDO表空间
一定要意识到,如果 undo 表空间中存在空间压力时,我们不保证前镜像一定会保留这么长时间。 因此,以下公式可用于计算佳 undo 表空间大小: 从 Oracle 10g 开始,您可以选择使用 GUARANTEE 选项,以确保在...
甲骨论-08-Undo表空间管理 本章详细介绍了undo表空间的工作原理以及与undo相关的数据字典
Oracle 12c中的表空间管理、用户和角色、临时Undo
innodb_undo_directory:指定单独存放undo表空间的目录,默认为.(即datadir),可以设置相对路径或者绝对路径。该参数实例初始化之后虽然不可直接改动,但是可以通过先停库,修改配置文件,然后移动undo表空间文件...
UNDO表空间用来存放改变前的旧值。里面也有段区块,ORACLE自动建立生成、自动使用UNDO段。 作为高级别的DBA是需要知道ORACLE如何使用UNDO段的。 1 Undo表空间及管理方式 ORACLE开始一个事务的时候,会用到表空间。...
Oracle 9i数据库中自动Undo表空间管理.pdf
如何Shrink Undo表空间,释放过度占用的空间