Pipo... Got a piece of info..
Hi
got a piece of info and looking for more..
Oracle Says [from metalink]
Full table scan's can make the most needed blocks from the SGA to age out due to the LRU algorithm. In Oracle7 a new init.ora parameter called SMALL_TABLE_THRESHOLD has been added. This determines the number of buffers in the SGA that are available for full table scans. The basic assumption is that the blocks read due to full table scans may not be required in near future and therefore should not age out other blocks already in SGA.
Thats it..! So SMALL_TABLE_THRESHOLD this is the threshold value. And if anybody know the corresponding parameter in 8i and 9i please update.
Good luck Pipo and thanks joining for the trasure hunt..!
Regards
Thomas
Re: Pipo... Got a piece of info..
Quote:
Originally posted by Thomasps
Hi
got a piece of info and looking for more..
Oracle Says [from metalink]
Full table scan's can make the most needed blocks from the SGA to age out due to the LRU algorithm.
Thats it..! So SMALL_TABLE_THRESHOLD this is the threshold value. And if anybody know the corresponding parameter in 8i and 9i please update.
Good luck Pipo and thanks joining for the trasure hunt..!
Regards
Thomas
SMALL_TABLE_THRESHOLD ( _small_table_threshold) is also used by CBO (based on the tables statistics) to determine if a table should have a FTS performed on it or not. A short table is usually loaded intot the MRU end of teh Buffer Cache... YOu can FLOOD the BUFFER_CACHE by CACHE (ing) LARGE tables. (Small lookup tables should be created with the CACHE option). And when read, are read into the MRU end.
Also, Full Table Scans (on NOCACHE/LARGE tables) are read into the LRU end of the Buffer Cache at a rate of DB_FILE_MULTIBLOCK_READ_COUNT * BLOCK SIZE. Therefore, if you have a Buffer_cache of 1000 Blocks, a DB_FILE_MULTIBLOCK_READ_COUNT of 8, (8K block size) each read will read in 8 (* 8k = 64K) blocks into the LRU of the buffercache each read. Leaving the other 992 blocks untouched. (Although there could be other Blocks of the same table scattered thoguhout the Buffer_cache from other transactions).
One Mr Jonathan Lewis proved this to me a couple of years ago.
Cheers,
_small_table_threshold =20
Johnson
From metalink
Quote:
This parameter has a different meaning in Oracle9i, Oracle8i, and in Oracle8.0 and earlier and it is not recommended that this parameter be set since it changes the default the value. The default is 2% of the buffer cache or 4 blocks (min 20 blocks in 9i).
So you got Oracle 9i..Right?
Thomas
Re: _small_table_threshold
Quote:
Originally posted by Thomasps
_small_table_threshold =20
And
BLOCK_SIZE: 16384
DB_CACHE_SIZE: 12582912
DB_FILE_MULTIBLOCK_READ_COUNT: 16
(Assume you got Oracle 9i)
So what is the relation..!!!
Again 2% is wrong..?
and also block_size * DB_FILE_MULTIBLOCK_READ_COUNT is also not matching..!! Any more idea Johnson..!!
Pando, Please jump in
Thomas
In actual fact, it seems the information I've proved satisfies my theory. ie. I've shown you that a FTS leaves DB_FILE_MULTIBLOCK_READ_COUNT + 1 blocks of the object being FTSed in the DB_BUFFER_CACHE. Therefore, as long as you are perfoming a FTS on an UNCACHED table, your BUFFER_CACHE will NOT be exhausted.
Also, "Any more idea Johnson..!! Pando, Please jump in"
I'm not sure how tio inteprete this, when I read it first, you fired me up. But, I've re-read it again and I'll give you the benefit of the doubt for now and read it as though, you are still legitimatly seeking additional information.