资讯专栏INFORMATION COLUMN

数据库enq US – contention等待分析

IT那活儿 / 804人阅读
数据库enq US – contention等待分析

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


系统配置

oracle数据库:12.2的双节点RAC
操作系统: AIX Version 7.2

DB patch :

  • 25294150;
  • 25319173;
  • 29314424;OCW APR 2019 RELEASE UPDATE 12.2.0.1.190416 (29314424)
  • 29314339;Database Apr 2019 Release Update : 12.2.0.1.190416 (29314339)

其他信息暂不统计。


现象分析

现象分析:数据库出现大量的enq:US–contention等待事件。


等待事件分析

3.1 问题时间点确认,可以看到11:08到11:10节点1的等待事件先达到了高峰,同时节点2在11:09也出现了等待高峰,11:18节点1又有一个高峰。
3.2 查看问题时间11:08到11:10两个节点的等待事件和次数的情况如下:
可以看到节点1出现大量的enq: US – contention等待。
3.3 可以看到该SQL的执行次数在一节点执行了将是31号的一倍,同时也将近是2节点的执行次数的2倍。
通过查询该SQL是一个对PLC_UTIOPERATE_LOG的insert语句:
由于大量的insert请求导致online 的undo_segment不够用,从而导致了大量enq: US – contention
同时根据MOS How to correct performance issues with enq: US - contention related to undo segments (Doc ID 1332738.1)发现:
通过查询发现row  cache lock的cache是dc_rolllback_segments。
该数据的相关参数如下:

可以看到_rollback_segment_count并没有配置,建议在高并发的情况下配置该数值,保持一定数量的undo的segment


问题总结

建议设置为alter system set "_rollback_segment_count"=3000;
两个实例都需要执行,不需要重启数据库。
在设置之前先查询下当前的online的段的个数,如果太小建议分几次递增式的增加(比如一次增加600)。
回退方案:
  • alter system set "_rollback_segment_count"=修改前的值;     

遗留问题。


本文作者:牛志明(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129143.html

相关文章

  • AbstractQueuedSynchronizer原理分析

    摘要:当前节点拥有的线程。方法返回值表示在线程等待过程中,是否有另一个线程调用该线程的方法,发起中断。如果前一个节点状态是,那么直接返回,阻塞当前线程如果前一个节点状态是大于就是,表示前一个 AQS是JUC锁框架中最重要的类,通过它来实现独占锁和共享锁的。本章是对AbstractQueuedSynchronizer源码的完全解析,分为四个部分介绍: CLH队列即同步队列:储存着所有等待锁...

    jlanglang 评论0 收藏0
  • AbstractQueuedSynchronizer原理分析

    摘要:当前节点拥有的线程。方法返回值表示在线程等待过程中,是否有另一个线程调用该线程的方法,发起中断。如果前一个节点状态是,那么直接返回,阻塞当前线程如果前一个节点状态是大于就是,表示前一个 AQS是JUC锁框架中最重要的类,通过它来实现独占锁和共享锁的。本章是对AbstractQueuedSynchronizer源码的完全解析,分为四个部分介绍: CLH队列即同步队列:储存着所有等待锁...

    CoyPan 评论0 收藏0
  • AbstractQueuedSynchronizer原理分析

    摘要:当前节点拥有的线程。方法返回值表示在线程等待过程中,是否有另一个线程调用该线程的方法,发起中断。如果前一个节点状态是,那么直接返回,阻塞当前线程如果前一个节点状态是大于就是,表示前一个 AQS是JUC锁框架中最重要的类,通过它来实现独占锁和共享锁的。本章是对AbstractQueuedSynchronizer源码的完全解析,分为四个部分介绍: CLH队列即同步队列:储存着所有等待锁...

    JasinYip 评论0 收藏0
  • AbstractQueuedSynchronizer理解之一(ReentrantLock)

    摘要:有了这个基础,才能发挥作用,使得在节点取消和异常时能够保证队列在多线程下的完整性。 Doug Lea是JDK中concurrent工具包的作者,这位大神是谁可以自行google。 本文浅析ReentrantLock(可重入锁)的原理 Lock接口 showImg(https://segmentfault.com/img/bV2671?w=276&h=176); Lock接口定义了这几个...

    learning 评论0 收藏0
  • AbstractQueuedSynchronizer理解之一(ReentrantLock)

    摘要:有了这个基础,才能发挥作用,使得在节点取消和异常时能够保证队列在多线程下的完整性。 Doug Lea是JDK中concurrent工具包的作者,这位大神是谁可以自行google。 本文浅析ReentrantLock(可重入锁)的原理 Lock接口 showImg(https://segmentfault.com/img/bV2671?w=276&h=176); Lock接口定义了这几个...

    bigdevil_s 评论0 收藏0
  • AbstractQueuedSynchronizer理解之一(ReentrantLock)

    摘要:有了这个基础,才能发挥作用,使得在节点取消和异常时能够保证队列在多线程下的完整性。 Doug Lea是JDK中concurrent工具包的作者,这位大神是谁可以自行google。 本文浅析ReentrantLock(可重入锁)的原理 Lock接口 showImg(https://segmentfault.com/img/bV2671?w=276&h=176); Lock接口定义了这几个...

    yunhao 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<