暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

EBS环境undo隐含参数调整

学徒杨新建 2018-06-19
892

情景

一般在oracle数据库中碰到如下报错

  1. ORA-01555: 快照过旧: 回退段号 140 (名称为 "_SYSSMU140_1145098141$") 过小

一般的想法都是对undo表空间进行扩容,因为报错的意思很明显undo表空间不够了,但是我们不能盲目的扩容undo表空间,也需要考虑实际的情况。

当前问题以及分析

最近,ebs环境(数据库的版本是11.2.0.2.0)的undo表空间总是会触发报警表示undo表空间的使用率很高且数据库有ORA-01555报错,而undo表空间APPS_UNDOTS1前不久才进行了扩容,并且当前的undo表空间已经达到300多个G(数据库特别大哦,这个设置较合理),理论上来说是足够用了,那么是什么原因导致报警频发并报出ORA-01555这样的报错呢?

这里关系到一个oracle数据库中的undo的隐含参数"_undo_autotune",这个参数的默认值是true,影响着undo表空间的使用,进而可能会对日结和月结产生影响。在Oracle 10gr2之后版本中添加了undo信息最短保留时间段自动调优的特性,不再仅仅依据参数UNDO_RETENTION的设定,而是根据undo tablespace的大小以及系统的繁忙程度(v$undostat中信息)自动调整undo_retention参数,因此会经常发现undo tablespace一直是满的。

解决方法

查看数据库隐含参数_undo_autotune的值,如果没有修改过,就是ture

  1. SELECT ksppinm, ksppstvl, ksppdesc

  2.  FROM x$ksppi x, x$ksppcv y

  3. WHERE x.indx = y.indx

  4.   AND TRANSLATE(ksppinm, '_', '#') LIKE '_undo_autotune';

从上述的情况来看需要关闭这个自动调优的参数的值,这个值可以在线进行修改,不需要重启数据库

  1. alter system set "_undo_autotune" = false;

后续验证

在关闭这个参数后,发现undo表空间的使用率迅速降低,从99%降低到49%,应用上报错ORA-01555也消失了.


文章转载自学徒杨新建,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论