暂无图片
分享
brent
2019-01-13
CBC latch和gc buffer busy acquire导致数据库hang

数据库01-07早晨10点20左右hang,到11.30恢复.期间准备做一个hang analyze,但是执行半个小时也没有出结果.最后数据库重启了解决问题,事后分析了awr报告.主要等待事件是CBC latch和gc buffer busy acquire,看上去是由热点块导致.事后也找到了热点块的表.应用确实写的不够好,有很多全表扫描,但是由于数据库的配置很高,512G内存,全SSD,4颗E7-8860CPU,平时就算在周一业务高峰期间也不会卡.而且应用最近也没有修改,平时是在8-10点是业务高峰期,10点半相对小一点.在分析awr的时候发现rac 集群之间的通信延时以及不论是数据文件IO还是redo flush time都很高.怀疑是存储IO有问题.但是存储工程师检查了存储日志说没有任何问题.

目前陷入僵局,请各位帮忙看看


收藏
分享
8条回答
默认
最新
brent
暂无图片 评论
暂无图片 有用 0
brent
暂无图片 评论
暂无图片 有用 0
brent

上传的_1就是1节点awr日志_2就是2节点的awr日志,我看了awr的分析,提到了g14yud83k2j87这个sql,这个sql平时执行很快,执行计划也是很好的.我再发一个平时正常的时候的awr给大家看一下

暂无图片 评论
暂无图片 有用 0
brent
暂无图片 评论
暂无图片 有用 0
章芋文

gc问题,

1、首先将DRM关闭,正常情况下就有这个情况,如果并发一多,很容易hang住或者宕机。

--永久关闭,需要重启
alter system set “_gc_undo_affinity”=FALSE scope=spfile sid=’*’;
alter system set “_gc_policy_time”=0 scope=spfile sid=’*’;

--在线关闭,不需重启
alter system set “_lm_drm_disable”=5;

2、同一个应用模块最好连接通一个节点,避免2个节点之间的队列锁等待

3、里面有sequence的等待,建议调大seq的cache值


做了以上操作后,观察awr是否比之前正常时候还低,gc等待减少,如仍然异常就需要详细分析

暂无图片 评论
暂无图片 有用 0
brent

昨天晚上我后来重新分析了系统日志,发现在hang期间,服务器可用内存直线下降,两个小时从100G将为0,随后出现大量的page in和page out,导致IO缓慢,引起GC等待.检查发现占用内存高的是ohasd.bin和ologgerd 可能是遇到了oracle bug

暂无图片 评论
暂无图片 有用 0
章芋文

DRM会引起非常多的BUG,两节点间交互频繁,并发加大后或者运行时间长了,很容易夯住,内存耗完是常见的表象。

我们在安装RAC时,最佳实践就是禁用DRM,官方同样也是建议关闭该特性。

暂无图片 评论
暂无图片 有用 0
章芋文
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏