昨天正式环境上出现数据库CPU 100%的问题,数据库是128个CPU,128G内存,power系列,非常强劲,十几万的逻辑读只需要1s。
出现问题之后,调整两条负载最高的两条SQL,问题解决,但有两个cluster类别的等待事件第一次见,在metlink中找了一篇文章:
gc buffer busy:--Gc缓冲区繁忙
gc buffer busy acquire: --Gc缓冲区获取繁忙
gc buffer busy release: --Gc缓冲区释放繁忙
--共享:RAC等待事件:gc buffer busy acquire
--概述
gc buffer busy是RAC数据库中常见的等待事件.
//11g开始:gc buffer busy 分为:
'gc buffer busy acquire' 和'gc buffer busy release':
--gc buffer busy acquire:
是当session#1尝试请求访问远程实例(remote instance) buffer,但是在session#1之前已经有相同实例上另外一个session#2请求访问了相同的buffer,并且没有完成,那么session#1等待gc buffer busy acquire。
--gc buffer busy release:
是在session#1之前已经有远程实例的session#2请求访问了相同的buffer,并且没有完成,那么session#1等待gc buffer busy release。
--区别:原因/解决方法
---------------------
--1).热点块(hot block)
在AWR中 Segments by Global Cache Buffer Busy 记录了访问频繁的gc buffer.
--解决方法:
可以根据热点块的类型采取不同的解决方法,比如采取分区表,分区索引,反向ind