Re: "gc cr multi block request" and "Current Blocks Received"

From: Leyi Zhang (Kamus) <"Leyi>
Date: Mon, 22 Nov 2010 10:02:42 +0800
Message-ID: <AANLkTim7=QGiCJ0qLaTnktyWwwpjeZj2mwLmRGWt7eWP_at_mail.gmail.com>



> If the block held in S mode in another instance,
> And if the holder=master, you get the current block.
> <gc current blocks received>

Interesting.

I try to reproduce it in my Oracle 10.2.0.4 2-nodes RAC, but have no luck.

In rac2 intance, I insert some new rows into table T, and try to remaster it manually:

SQL> insert into kamus.t select * from dba_objects;

10300 rows created.

SQL> select count(*) from kamus.t;

  COUNT(*)


    348792

SQL> select object_id,data_object_id from dba_objects where object_name='T';

 OBJECT_ID DATA_OBJECT_ID
---------- --------------

     23143 23143

SQL> oradebug lkdebug -m 23143
Statement processed.
SQL> In rac1 instance:
SQL> select name,value from v$sysstat where NAME in ('gc cr blocks received','gc current blocks received');

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
gc cr blocks received                                                  2317
gc current blocks received                                             6204

SQL> /

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
gc cr blocks received                                                  2317
gc current blocks received                                             6204

SQL> select count(*) from kamus.t;

  COUNT(*)


    338492

SQL> select name,value from v$sysstat where NAME in ('gc cr blocks received','gc current blocks received');

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
gc cr blocks received                                                  2603
gc current blocks received                                             6205

Only got 1 block "gc current blocks received" and all others are "gc cr blocks received".

--
Kamus <kamusis_at_gmail.com>

Visit my blog for more : http://www.dbform.com
Join ACOUG: http://www.acoug.org



On Sun, Nov 21, 2010 at 8:03 AM, K Gopalakrishnan <kaygopal_at_gmail.com> wrote:

> Kamus,
> Depending on the state of the block and mode, you might get a cr block or
> current block. Here is the possible operations for your gc cr request. I
> have dealt these issues little bit  in my upcoming 11g RAC book, however you
> might have to wait for few months to get a copy in your hand. So to answer
> your question here is the possible answer.
> If 'gc cr request' is made from your instance
> If the block is not cached elsewhere,
> You get the CR grant, and wait on 2-3 way messages.
> If the block is held in X mode in another in another instance
> Holder constructs CR copy and you get the block.
> <gc cr block received>
> If the block held in S mode in another instance,
> And if the holder=master, you get the current block.
> <gc current blocks received>
> However please keep in mind undo block (header/data) transfers are always
> current blocks, though it increments the 'gc cr blocks received' stats.
> -Gopal
>
>
> On Fri, Nov 19, 2010 at 5:21 PM, Leyi Zhang (Kamus) <kamusis_at_gmail.com>
> wrote:
>>
>> Hi, experts:
>>
>> We have a RAC system, in AWR report "gc buffer busy" is top 1 wait (31
>> Percent Total DB Time), and "gc cr multi block request" is the 2nd (21
>> Percent Total DB Time)
>>
>> But in AWR report - "Segment Statistics" section ,we can only find
>> there are lots of "Current Blocks Received", not so much "CR Blocks
>> Received".
>>
>> So my question is: Is it possible If a session waiting on "gc cr multi
>> block request" and then it  received a  "Current Block"?
>>
>> --
>>
>
>
-- http://www.freelists.org/webpage/oracle-l
Received on Sun Nov 21 2010 - 20:02:42 CST

Original text of this message