undo案例二

本文描述了一个Oracle 10.2.0.4.0数据库中undo表空间使用率过高但未报ORA-30036错误的情况。问题由.undo_retention自动调整功能引起,该功能导致大量undo extent长时间保持unexpired状态,无法回收。解决方案包括禁用_undo_autotune参数,或者升级到11.1版本或应用补丁。
摘要由CSDN通过智能技术生成

本周处理的第二个关于UNDO的案例

第一个:undo案列一


今天一来再次被告知另外一套数据库也出现undo表空间使用率过高的情况(这次学乖了,先问客户有没有程序运行报ORA-30036错误,O(∩_∩)O哈!)


OS:AIX

DB:10.2.0.4.0

现象:undo表空间使用率过高,未发现报ORA-30036的情况。


能想到Undo表空间出现使用率过高的情况,常见的原因有:

1)    有大事务的SQL使用了大量的undo空间

2)    分配出来的undo段中expired和unexpired状态的extent过多,虽然这部分extent是可以重用的,但是在查看undo使用率的时候常会把这两种状态下的extent占用的空间计算在undo表空间的使用空间内,造成undo表空间虚高

3)    设置的undo_retention时间过长,造成undo段中的extent长期保持在unexpired状态,无法正常回收

Oracle10gundo_retention自动优化功能的影响,该功能会在UNDO表空间非自动增长的情况下,动态调整undo_retention的值忽略系统自身设置的undo_retention的值,以最大限制的利用当前UNDO表空间的可用空间,尽可能的保留最多的UNDO数据,以减少ORA-1555错误的发生,但是也会造成undo_retention值过大,引起大量extent长时间置于unexpired状态无法回收,参考原因2)和3)也会引起undo表空间虚高


查看undo段实际占用情况的信息:

回滚段信息:                                                                                   
SYSDATE  Tablespace Name  TS Size(MB) UNDO Status Used Extents Used Size(MB) Used Rate(%) 
-------- ----------------- ----------- ----------- ------------ ------------- ------------
09:09:49      UNDOTBS1           16336 ACTIVE                 2            16          0.1
09:09:49      UNDOTBS1           16336 EXPIRED             1075          2703        16.55
09:09:49      UNDOTBS1           16336 UNEXPIRED           1675      11889.44        72.78
09:09:49      UNDOTBS2           16336 ACTIVE                 5            40         0.24
09:09:49      UNDOTBS2           16336 EXPIRED             1493        6198.5        37.94
09:09:49      UNDOTBS2           16336 UNEXPIRED           1820       9643.75        59.03

表空间信息:

NOW
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值