Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Mailing Lists -> Oracle-L -> Re: recreable/freeable chunks

Re: recreable/freeable chunks

From: Tanel Poder <>
Date: Tue, 06 Jan 2004 04:44:42 -0800
Message-ID: <>

Content-Type: text/plain
Content-Transfer-Encoding: 7bit


I planned this answer a short one, but...

> Could you explain what is recreatable /freeable
> chunks and
> once recreatable chunks is removed from memory
> where it is kept.

Memory allocations from shared pool heap or its subheaps are done in chunks. When allocating a chunk from shared pool heap, the requestor states how many bytes it wants and which type the chunk will be. The major types requested can be free, freeable, recreatable and permanent.

Descriptions of chunk types:
  The chunk is free and can be allocated to any request with equal or smaller size (it is on appropriate freelist in its heap, depending on its size).

  Freeable chunks are currently in use, but can be explicitly freed by their allocators. Shared pool heap manager will not free those chunks automatically if a new allocation has to be made.

  This chunk is used, but its contents can be regenerated if needed (such are execution plans for cursors for example), thus Oracle can automatically reuse these chunks for others (of course when these chunks arenīt in use, thus unpinned). So when this information orignially stored in recreatable chunk is needed again, a callback function is executed, to recreate the contents in a chunk - callback functions containing instructions to recreate the information are registered for each recreatable chunk in heap manager's area if I recall correctly...) Information about unpinned recreatable chunks are held in heap LRU lists.

  This allocation type states that once allocated, this memory is never freed during instance lifetime, even when flush shared_pool is issued.

Freeable and Permanent chunks do not have to be in any LRU or freelists, because of their nature (when a "freeable" chunk is freed, then it becomes a "free" chunk and only then it goes to a freelist)

When shared pool is initialized during startup, half of its free memory will be allocated for a special type of permanent chunk, which can be "freed" in increments in case when both freelists and LRU lists don't have enough contiguous space in them. (It gets more complex starting from shared pool size about 67M)

Note that I'm just beginning to explore the (quite interesting) world of Oracle SGA, so I might not be 100% correct.



Please see the official ORACLE-L FAQ:
Author: Tanel Poder

Fat City Network Services    -- 858-538-5051
San Diego, California        -- Mailing list and web hosting services
To REMOVE yourself from this mailing list, send an E-Mail message
to: (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).
Received on Tue Jan 06 2004 - 06:44:42 CST

Original text of this message