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

19c BUG 导致大量gc quiesce等待

原创 yuqi.zhou 2020-07-08
3494

问题现象

其中一套数据库在业务测试过程中,业务反馈入库进程缓慢。入库是程序调用SQL*LOADER,在入库前进程会先将表进行truncate。

问题分析

首先从v$session中,可以看到有一些gc quiesce等待,且sql_id不断变化,证明等待的时间不算太长,而且持续不断的发生,sql文本显示都是一些truncate语句,跟入库进程相关。

取awr分析,绝大部分的BD time消耗在gc quiesce等待上,平均等待时间1s。
图片.png

且等待全部消耗在truncate语句上。
图片.png

gc quiesce不是一个常见的等待事件,通过搜索相关资料,信息比较有限。
下面的说明显示:该等待本身不是问题,只是其他一些问题(如:ORA-600)的副作用。
The process was waiting for a GC lock to quiesce. In general, this event should NOT be severe.
The wait event itself is not a problem, it is a side effect of other problem (eg, ora-600 or other problem which prevent it from processing further)

且搜索到在10.2.0.3版本上,有一个跟truncate相关的BUG介绍,虽然版本差距较大,但隐约感觉当前的问题依然是BUG引起。
图片.png

通过SR沟通,答复与Bug 29908777的现象匹配度较高,该BUG目前没有公开的文档资料,但已经有针对我们19.6版本的补丁发布。
具体问题是buffer上的锁在关闭时存在不必要的处理,可能造成导致1秒以内的"gc quiesce"等的等待事件。而这个等待事件是否出现,可能与当时各个节点的缓存状况以及是否有热块有关;而且在涉及较多Buffer的TRUNCATE处理上会表现得明显一些。

问题解决

通过打上29908777补丁,经观察gc quiesce等待基本消失。
平均等待时间由原来的1s降为0.08ms,问题解决。
图片.png

最后修改时间:2020-08-11 15:45:20
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论