Re: gc buffer busy from the same instance??

From: Jonathan Lewis <>
Date: Sat, 9 May 2009 13:43:55 +0100
Message-ID: <>

<> wrote in message On May 8, 3:10 pm, Steve Howard <> wrote:
> Hi All,
> EE on SLES 10
> We have seen fairly significant waits recently on this during a large
> load recently. We know which query is causing it and are submitting a
> fix, but my question is the following:
> When I select from gv$session, I see session x on instance 2 waiting
> on "db file sequential read" for a given file and block number. I see
> session y, also on instance 2, waiting on "gc buffer busy" for the
> same file and block. These are the only two sessions going after this
> block.
> I can understand (and would expect) this if session y was on instance
> 3, or whatever. However, since both sessions are on the same
> instance, why is this not either recorded as "read by other session"
> or "buffer busy waits" event?
> Thanks,
> Steve

I found this in the docs, which to me still doesn't explain it...


High concurrency is instead evidenced by the existence of the gc buffer busy event. This event indicates that the block was pinned or held up by a session on a remote instance. It can also indicate that a session on the same instance has already requested the block, which in either case is in transition between instances and the current session needs to wait behind it.


How is a session on the same instance requesting a block the same as a transition between instances??

I'm sure the diagnostics pack (at least ADDM) uses the wait classes for its recommendations. If it sees this as a cluster class event, vs I/O, it may recommend different things (sometimes incorrectly)

I will open an SR for clarification and report back.

Here's a possible scenario:

Session 1 on node 1 wants the block in current mode

Session A on node 2 is changing it causing session 1 to go into a gc buffer busy wait

Session 2 on node 1 wants the same block in current mode and goes into gc buffer busy wait as well

Session A releases the block on node 2, but for various reasons it has to be passed by disk, not by the interconnect, so session 1 terminates its gc buffer busy wait and goes into a db file sequential read.


Jonathan Lewis

Author: Cost Based Oracle: Fundamentals

The Co-operative Oracle Users' FAQ
Received on Sat May 09 2009 - 07:43:55 CDT

Original text of this message