Re: gc buffer busy from the same instance??

From: <stevedhoward_at_gmail.com>
Date: Sat, 9 May 2009 08:19:06 -0700 (PDT)
Message-ID: <956f19e5-d67a-4569-8c74-ea92a12ef58f_at_x6g2000vbg.googlegroups.com>



On May 9, 8:43 am, "Jonathan Lewis" <jonat..._at_jlcomp.demon.co.uk> wrote:
> <stevedhow..._at_gmail.com> wrote in message
>
> news:fe3978e2-5fde-4cbd-ba1f-7c48328b80c4_at_o14g2000vbo.googlegroups.com...
> On May 8, 3:10 pm, Steve Howard <stevedhow..._at_gmail.com> wrote:
>
>
>
> > Hi All,
>
> > 10.2.0.4 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...
>
> http://download.oracle.com/docs/cd/B19306_01/rac.102/b14197/monitor.h...
>
> /
> *************************************************************************************************************************
>
> 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.
>
> --
> Regards
>
> Jonathan Lewishttp://jonathanlewis.wordpress.com
>
> Author: Cost Based Oracle: Fundamentalshttp://www.jlcomp.demon.co.uk/cbo_book/ind_book.html
>
> The Co-operative Oracle Users' FAQhttp://www.jlcomp.demon.co.uk/faq/ind_faq.html

Thanks, Jonathan. This would explain it. I would expect to see a 'gc buffer busy wait' for the session just prior to it posting a 'db file sequential read' event (for the same file and block). I will test this by checking gv$session_wait_history (for all sessions across all nodes) next week and report back what I find.

Thanks,

Steve Received on Sat May 09 2009 - 10:19:06 CDT

Original text of this message