1、gc current block 2-way
一个实例请求对当前节点(主控节点)中的一个数据块进行修改,该数据块又因为修改已缓存在另一节点中。 存在‘写/写’争用
2、gc current block 3-way
一个实例请求对当前访问的一个数据块进行修改,主控节点收到请求,将消息发给当前块的拥有者,让其放弃所有权,当前块的拥有者接受到消息,将独占锁发送给请求的实例,请求者才得以修改该数据块。 存在‘写/写’争用
3、gc cr block 2-way
一个实例请求对当前节点(主控节点)中的一个数据块进行读取,该数据块又因为修改已缓存在另一节点中。 存在‘写/读’争用
4、gc cr block 3-way
一个实例请求对当前访问的一个数据块进行读取,主控节点收到请求,将消息发给当前块的拥有者,当前块的拥有者接受到消息,将共享锁发送给请求的实例,请求者才得以获取到该数据。 存在‘写/读’争用
5、gc current grant 2-way
一个实例请求对当前访问的一个数据块进行修改或者读取,主控节点收到请求,发现还没有任何实例锁定该块,于是将次消息告诉请求者,并给他此数据块独占锁或者共享锁的权限。 不存在争用
6、gc current block busy
一个实例请求对当前访问的一个数据块进行修改,主控节点收到请求,将消息发给当前块的拥有者,当前块的拥有者接受到消息,却因为某种原因并不能将此数据块的权限给请求者,原因如下 存在严重的‘写/写’争用
a.这个块正在被另外一个实例上的一个会话使用
b.拥有这个数据块的实例不能马上将相应的重做记录写到联机重做日志文件中
select e.sid,e.time_waited,s.program,s.module from v$session_event e,v$session s where s.sid = e.sid and e.event='gc current block busy' order by e.time_waited
7、gc cr disk read
一个实例请求对当前访问的一个数据块进行读取,主控节点收到请求,将消息发给当前块的拥有者,当前块的拥有者接受到消息,发现在自己的缓存中找不到该块(已被替换出缓存),请求者得到拥有者发来权限后需要自己去磁盘重新获取该块内容,才得以获取到该数据。 不存在争用
8、buffer busy global cr
一个实例要生成当前块的CR版本时,如果在本地缓存中,实例要读取事务表,并从回滚段或撤销段中读取这个块的活动事务表中引用撤销块
9、gc cr failure
一个实例请求对当前访问的一个数据块进行读取,主控节点收到请求,将消息发给当前块的拥有者,当前块的拥有者接受到消息,返回给请求者一条故障状态的消息。经常出现gc blocks lost需要查看硬件和网络层。 比较严重
select * from v$sysstat where name = 'gc blocks lost' or name = 'gc claim blocks lost';
10、gc cr block busy 或者 gc current buffer busy
本地实例上的多个会话正在同时访问相同的块 不存在实例间的争用,需要优化本地sql,减少请求的块
11、gc current block congested 或者 gc cr block congested
一个实例请求对当前访问的一个数据块进行修改,主控节点收到请求,GCS(主控节或者其它此块拥有者)并没有资源(如 CPU忙)去处理该问题。 不存在争用 ,可以增加LMS进程来获取更多CPU时间