Re: Oracle Keep Pool

From: joel garry <>
Date: Wed, 25 Nov 2009 09:41:19 -0800 (PST)
Message-ID: <>

On Nov 25, 4:47 am, Charles Hooper <> wrote:
> On Nov 24, 8:51 pm, Mike <> wrote:
> > Hi,
> > We're on 10g.  We're playing with the Keep Pool.  If the Keep Pool is
> > meant to keep frequently used blocks/tables in cache, well, if they we
> > frequently used, wouldn't they be in the cache anyhow??
> > So, what is the purpose of the Keep Pool??

Really, it is to segregate warm segments: ..."you can move the small warm segments into a separate KEEP cache that is not used at all for large segments. The KEEP cache can be sized to minimize misses in the cache. You can make the response times for specific queries more predictable by putting the segments accessed by the queries in the KEEP cache to ensure that they do not age out." -11g performance guide. I've noticed in my mostly OLTP system this doesn't seem to be necessary. I think this may have been more useful in the days of smaller memory - RECYCLE made a big difference in my 9i system, but I don't bother anymore, same system on 10g (on newer hardware with same amount of memory).

> From:
> "Keep pool: This pool is intended for blocks that were accessed
> frequently, but which aged out of the default pool because of lack of
> space. The goal of the keep buffer pool is to retain objects in
> memory, thus avoiding I/O operations."
> The KEEP pool, RECYCLE pool, and DEFAULT pool utilize different goals
> (algorithms) for keeping blocks in memory.  Any table or index block

Do you have a reference for this? I was under the impression the only difference is whether you can use the cache keyword, the naming was purely arbitrary. I may be out of date, of course. But see the ask tom you quoted... the goal is just the desire of the DBA to keep segments with different access patterns segregated to avoid pushing out segments that should be kept.

> read into the KEEP buffer cache is intended to remain in the KEEP
> buffer cache until the database is shutdown, including blocks read by
> full table scan.  Thus, the KEEP buffer cache needs to be large enough
> to contain all of the blocks accessed from the various objects
> assigned to the KEEP buffer pool.

> You might also want to take a look at the following discussion on
> Asktom:
> Charles Hooper
> Co-author of "Expert Oracle Practices: Oracle Database Administration
> from the Oak Table"
> IT Manager/Oracle DBA
> K&M Machine-Fabricating, Inc.


-- is bogus.
Received on Wed Nov 25 2009 - 11:41:19 CST

Original text of this message