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).