java防止undo空间撑爆_Undo表空间Unexpired Block长时间不释放, 表空间使用率100%,居高不下...

最近一个Oracle11g的数据Undo表空间Unexpired Block不释放。按照下面处理后,问题解决。

今天碰到一个怪现象,朋友那反映UNDO表空间里,Unexpired Block差不多占了整个空间的95%。

且持续了3小时还一点没释放。朋友比较怕出啥问题,问要不要扩undo 表空间?

viewspace-1358911

详细询问了下UNDO表空间的具体设置,如下:

1、undo_retention=900;

2、未设置表空间的retention guarantee;

3、UNDO表空间设置为非自动扩展;

4、数据库未oracle 11g;

5、高峰期并发用户大约在1000左右;

朋友说提了个SR,oracle给了个参数,"_smu_debug_mode" = 33554432,改到系统中,报出一大堆ORA-01555,赶紧改了回来。

莫非是碰到bug了?查了下,在oracle 10.2.0.2-3,确实有个很类似的bug:5387030。

正常情况下,如果undo 表空间被设置为固定大小,不自动扩展,oracle会启用Automatic Tuning of undo retention特性。

启用Automatic Tuning of undo retention时,oracle会忽略undo_retention的设置,根据undo表空间大小、系统负载情况,自动调整undo_retention为一个合适的值。这个值一般会大于“所有事务的最长运行时间”。

10gR2的bug现象为,只要设置了undo表空间自动管理,不管有没开自动扩展,不管undo_retention设置为多少,都会启用 Automatic Tuning of undo retention的新特性。

这个bug的解决办法:

10.2.0.2/10.2.0.3有相应的patch,这个bug在10.2.0.4中已经修复,建议找时间停机打patch

设置隐含参数_smu_debug_mode=33554432,将tuned_undoretention取值算法修正为max(maxquerylen secs + 300,undo_retention )

设置隐含参数_undo_autotune=false,关闭自动undo retention调整特性

在10.2.0.4及以后,这个bug就修复了。朋友那问题,肯定不是这bug引起的。

在查阅这bug时,发现Automatic Tuning of undo retention的启用条件,与朋友那完全吻合,莫非这跟Automatic Tuning of undo retention有关。

查了下官方文档,确实如此。

viewspace-1358911

上朋友系统查了下,果然,undo_retention被自动调整了:

viewspace-1358911

到这,基本就清楚了,虚惊一场。看来以后看文档,还得再仔细些.......

朋友觉得这undo表空间使用率100%,看着别扭,呵,后来设置为自动扩展,限制最大大小后,100%立即下来了。

最后总结下,呵,在oracle 10.2.0.4,oracle11g里面,如果碰到undo使用率100%,不释放的问题。不建议再通过调整隐藏参数来解决undo占用率高的问题。

更推荐设置undo空间的自动扩展 + 限制文件最大大小的方式来解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值