问题描述
早上7点左右,系统突然出现CPU警报,后连接失败,直接连接操作系统可以登录但操作特别卡顿,后现象消失,后排查,发现告警日志其中有两个可疑告警一个是VKTM另外一个是01555,目前还不清楚具体是什么原因造成?
专家解答
根据今天早上6-8点的AWR看到前台主要的GC相关的等待事件:
latch: cache buffers chains: 12.48%
latch: gc element: 2.83%gc buffer busy acquire: 29.9%
gc buffer busy release: 9.48%
gc current block 2-way: 2.86%
gc current block congested: 1.65%
gc cr grant congested: 1.6%
gc current grant busy: 1.25%
gc cr grant 2-way: 1.11%
RAC两节点数据交互每秒达到了3M,且在AWR的topSQL中存在update undo$想到SQL:
update /*+ rule */ undo$ set name=:2, file#=:3, block#=:4, status$=:5, user#=:6, undosqn=:7, xactsqn=:8, scnbas=:9, scnwrp=:10, inst#=:11, ts#=:12, spare1=:13 where us#=:1
初步判断为GC相关的BUG,建议根据白求恩的巡检调整如下参数(需重启):
对于数据库实例,在11版本中,隐含参数 _undo_autotune 负责 undo retention(即 undo 段的保持时间)的自动调整,若由 Oracle 自动负责 undo retention,则 Oracle 会根据事务量来占用 undo 表空间,可能会形成 undo 表空间的争用,建议将其关闭。
参考命令:alter system set "_undo_autotune"=FALSE scope=spfile sid='*';
对于数据库实例,在11版本RAC中,DRM(Dynamic Resource Mastering)负责将 Cache 资源 Remaster 到频繁访问这部分数据的节点上,从而提高 RAC 的性能。但是 DRM 在实际使用中存在诸多 Bug,频繁的 DRM 会引发实例长时间 Hang 住甚至是宕机,建议关闭 DRM。
参考命令:alter system set "_gc_policy_time"=0 scope=spfile sid='*';
对于数据库实例,在11版本RAC中,建议关闭集群 Undo Affinity,降低集群交互,避免触发相关 BUG。
参考命令:alter system set "_gc_undo_affinity"=FALSE scope=spfile sid='*'