iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle—undo回滚段长时间不释放
  • 471
分享到

Oracle—undo回滚段长时间不释放

2024-04-02 19:04:59 471人浏览 泡泡鱼
摘要

Undo回滚段中 Unexpired Block迟迟不释放掉,占用90%以上的undo表空间. 导致数据库事务等待严重. DML运行异常缓慢. JOB运行也有ora-01555错误.

Undo回滚段中 Unexpired Block迟迟不释放掉,占用90%以上的undo表空间.

导致数据库事务等待严重. DML运行异常缓慢. JOB运行也有ora-01555错误.



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

   1、undo_retention=3600;

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

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

   4、数据库版本11.2.0.1.0



   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有关。

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

Oracle—undo回滚段长时间不释放

 

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

                      Oracle—undo回滚段长时间不释放

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

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


您可能感兴趣的文档:

--结束END--

本文标题: Oracle—undo回滚段长时间不释放

本文链接: https://www.lsjlt.com/news/48783.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle—undo回滚段长时间不释放
    Undo回滚段中 Unexpired Block迟迟不释放掉,占用90%以上的undo表空间. 导致数据库事务等待严重. DML运行异常缓慢. JOB运行也有ora-01555错误. ...
    99+
    2024-04-02
  • oracle undo表空间释放的方法是什么
    Oracle中释放undo表空间的方法有以下几种: 使用回滚段管理器(Rollback Segment Management)进...
    99+
    2023-10-26
    oracle
  • oracle临时表空间不足如何释放
    在Oracle数据库中,临时表空间不足可能是由于临时表空间的大小不足或者是由于其他会话占用了过多的临时表空间。为了释放临时表空间,可...
    99+
    2024-04-09
    oracle
  • oracle临时表空间不释放如何解决
    如果Oracle临时表空间不释放,可以尝试以下方法解决:1. 检查是否有长时间运行的事务或会话占用了临时表空间。可以使用以下查询语句...
    99+
    2023-09-15
    oracle
  • oracle临时表空间如何释放
    在Oracle数据库中,临时表空间是用来存储临时数据的空间,一般用于排序、连接、分组等操作。临时表空间的释放可以通过以下步骤进行: ...
    99+
    2024-04-09
    oracle
  • oracle怎么释放临时表空间
    要释放Oracle数据库中的临时表空间,可以按照以下步骤进行操作:1. 首先,确保当前会话没有使用该临时表空间。可以通过执行以下查询...
    99+
    2023-09-28
    oracle
  • oracle数据库删除表字段时间要多长
    删除表字段的时间取决于表大小、结构、列类型和数据库服务器性能。对于小型表,通常几秒钟即可删除;中等大小的表需要几分钟到几十分钟;大型表可能需要数小时甚至数天。优化性能的方法包括创建临时表...
    99+
    2024-05-10
    oracle
  • oracle临时表空间无法释放怎么解决
    当Oracle临时表空间无法释放时,可能是因为临时表空间中存在未提交的事务或者被长时间运行的查询锁定了表空间。以下是一些解决方法: ...
    99+
    2024-04-09
    oracle
  • oracle回滚到某一时间的方法是什么
    在Oracle数据库中,可以使用Flashback Query和Flashback Table功能来回滚到某一时间点的数据状态。 ...
    99+
    2024-04-08
    oracle
  • oracle数据库删除表字段时间要多长才能删除一个
    oracle 数据库删除表字段的时间取决于表大小、字段大小等因素,通常可在几毫秒到几秒内完成。步骤包括更新数据字典、重写数据块和合并空闲空间,影响因素包括表大小、字段大小和数据库活动。 ...
    99+
    2024-05-11
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作