Hi all,

I'm late to the party on this, but I'm trying to understand what the
results of Jonathon's query mean.

I have a database that I suspect has a "too large" buffer cache. Here's
the SGA:

SQL> show sga

Total System Global Area  864323352 bytes
Fixed Size                   280344 bytes
Variable Size             167772160 bytes
Database Buffers          687865856 bytes
Redo Buffers                8404992 bytes

Jonathan's query:

SQL> select    file#, dbablk, count(*)
  2  from    x$bh
  3  group by
  4  file#, dbablk
  5  having count(*) > 5
  6  ;

     FILE#     DBABLK   COUNT(*)
---------- ---------- ----------
         1        422          6
         1        443          6
         1       9077         10
         1      12505          6
         1      14951          6
         1      15183          6
         1      15231          6
         1      17267         14
         1      17274          9
         1      17481          6
         1      17483          6
         1      17533          6
         1      17630          6
         4          7          6
         5       5432          6
         5       5433          6
         5       5472          6
         5       5473          6
         5       5512          6
         5       5552          6
         5       5553          6
         5       5785          6
         5      21894          6
         5      21898          6
         5      63412          6
         5      63413          6
         5      63414          6
         5      63415          6
         5      63416          6
         5      63417          6
         5      63418          6
         5      63419          6
         5      63420          6
         5      63421          6
         5      63422          6
         5      63423          6
         5      63424          6
         5      63425          6
         5      63426          6
         5      63427          6
         5      63428          6
         5      63429          6
         5      63430          6
         5      63431          6
         5      63432          6
         5      63433          6
         5      63434          6
         5      63435          6
         5      63436          6
         5      63437          6
         5      63438          6
         5      70658          6
         5      70659          6
         5     320502          6
         5     354711          6
         5     354714          6
         5     354721          6
         5     354723          6
         6      71860         81
         6      71864         21
         6      71871         73
         6      71872         21
         6      71874        101
         6      71875          8
         6      71898        161
         6      71905        106
         6      71913         23
         6      71915         23
         6      71922         23
         6      71924         26
         6      71929         42
         6      71932         23
         6      71934         21
         6      71937         23
         6      71939         15
         6      71942         23
         6      71944         37
         6      71946         21
         6      71947         23
         6      71949          8
         6      71951          8
         6      71952         24
         6      71955         23
         6      71957          9
         6      71968          8
         6      71971         23
         6      91747         14
         6      91752         23
         6      91759          9
         6      98815         41
         6     121404          7
         6     172630         21
         6     274077         21
         6     274089         25
         6     274092         23
         6     274094         23
         6     274096          8

     FILE#     DBABLK   COUNT(*)
---------- ---------- ----------
         6     274098         23
         6     274099         21

99 rows selected.


So, the count(*) is the number of copies of that block in the SGA?
Is it desirable to keep this number down (<7)?
If so, why? Doesn't a CR copy of a block have to be done for each query,
assuming they are performed at different points in time?
If the SGA were smaller, I assume that a block would be aged out or the
SGA resulting in a lower count. Is this faster than just reading another
copy into the SGA (and having a higher count)?


Thanks!

- Jerry

:P

-----Original Message-----
Sent: Saturday, January 25, 2003 4:54 PM
To: Multiple recipients of list ORACLE-L



Thanks Stephen, but I'm just not ambitious enough
for that today.  :)

Jared

On Saturday 25 January 2003 05:20, Stephane Faroult wrote:
> [EMAIL PROTECTED] wrote:
> > Yes, the only problem is that doing a join with the dba_extents 
> > query makes this run rather long.
> >
> > Jared
>
> Because the join is done BEFORE the HAVING filtering. I would push the

> HAVING to an online view, and join on the output. And use sys.uet$, 
> sys.seg$, sys.obj$ and sys.user$ rather than dba_extents.
>
> > "Thomas Day" <[EMAIL PROTECTED]>
> > Sent by: [EMAIL PROTECTED]
> >  01/24/2003 10:39 AM
> >  Please respond to ORACLE-L
> >
> >
> >         To:     Multiple recipients of list ORACLE-L
> > <[EMAIL PROTECTED]> cc:
> >         Subject:        Re: Slow database, too MANY buffers???
> >
> > So this is what you're looking for?
> >
> > col segment_name format a30
> > col segment_type format a10
> > select segment_name, segment_type, count(*)
> > from dba_extents, x$bh
> > where file_id = file#  and dbablk  between block_id and block_id + 
> > blocks - 1 group by segment_name, segment_type
> > HAVING count(*) > 5
> > ORDER BY 3
> > /
> >
> >
> >                       Jared.Still
> >                       @radisys.com             To:      Multiple
> > recipients of list ORACLE-L <[EMAIL PROTECTED]>
> >                       Sent by: root            cc:
> >                                                Subject: Re: Slow 
> > database, too MANY buffers???
> >
> >                       01/24/2003 12:34
> >                       PM
> >                       Please respond
> >                       to ORACLE-L
> >
> >
> >
> > I just use this script that I originally used for finding which 
> > object corrupt blocks are in.
> >
> > Serves well for this as well.
> >
> > Note that file_id is the incorrect column to
> > use on a database with > 1022 data files.
> >
> > I think you need to use relative_fno in that case.
> >
> > Jared
> >
> > -- ora_1578.sql
> > -- use args from ORA-1578 errors to find
> > -- file and segment generating the error
> >
> > col cfileid new_value ufileid noprint
> > col cblockid new_value ublockid noprint
> >
> > prompt File ID:
> > set term off feed off
> > select '&1' cfileid from dual;
> >
> > set feed on term on
> > prompt Block ID:
> > set term off feed off
> > select '&2' cblockid from dual;
> > set feed on term on
> >
> > --define ufileid=8
> > --define ublockid=129601
> >
> > select file_name "FILE WITH CORRUPT BLOCK"
> > from dba_data_files
> > where file_id = &ufileid
> > /
> > col segment_name format a30
> > col segment_type format a15
> >
> > select segment_name, segment_type
> > from dba_extents
> > where file_id = &ufileid  and &ublockid  between block_id and 
> > block_id + blocks - 1 /
> >
> > undef 1 2
> >
> > "Thomas Day" <[EMAIL PROTECTED]>
> > Sent by: [EMAIL PROTECTED]
> >  01/24/2003 07:54 AM
> >  Please respond to ORACLE-L
> >
> >         To:     Multiple recipients of list ORACLE-L
> > <[EMAIL PROTECTED]>
> >         cc:
> >         Subject:        Re: Slow database, too MANY buffers???
> >
> > We'll I don't want to show my ignorance but I'll never learn if I 
> > don't ask.  How do you get from DBABLK to PK_MATERIAL_ORDER_POOL?
> >
> >                       Jared.Still
> >                       @radisys.com             To:      Multiple
> > recipients of list ORACLE-L <[EMAIL PROTECTED]>
> >                       Sent by: root            cc:
> >                                                Subject: Re: Slow 
> > database, too MANY buffers???
> >
> >                       01/23/2003 04:09
> >                       PM
> >                       Please respond
> >                       to ORACLE-L
> >
> > Well, I'm close.
> >
> > I just ran this on the DEV database for an app that is in the 
> > 'upgrade' process.
> >
> >      FILE#     DBABLK   COUNT(*)
> > ---------- ---------- ----------
> >         10      38968          6
> >         11      22753          6
> >         11      40180          6
> >         11      74893          6
> >         16     104388          6
> >         16     104511         66
> >
> > 6 rows selected.
> >
> > Which resolves to index PK_MATERIAL_ORDER_POOL.
> >
> > Looks like further investigation is in order.
> >
> > Jared
> >
> > --
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Jared Still
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in the
message BODY, include a line containing: UNSUB ORACLE-L (or the name of
mailing list you want to be removed from).  You may also send the HELP
command for other information (like subscribing).

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Cunningham, Gerald
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to