RE: rman Ora-4031 - how to flush large pool?

From: Tanel Poder <>
Date: Wed, 16 Jul 2008 02:13:11 +0800
Message-id: <27B7D763BA17450D819ADC2C71ABDBD9@windows01>


Roughly what happens when you flush shared pool, is:

  1. Oracle just walks through the shared pool LRU lists (recreatable chunks) and frees them, unless they are pinned.
  2. While freeing chunk it also checks whether an adjacent chunk in memory is also free, if it is it will merge the adjacent free chunk and move the resulting chunk to appropriate freelist list based on its size.

So, it would be better to say that flush shared pool coalesces adjacent free space but doesn't go all the way to defragging by moving chunks around.

Tanel Poder

> -----Original Message-----
> From:
> [] On Behalf Of Tim Gorman
> Sent: Wednesday, July 16, 2008 00:06
> To:
> Cc:
> Subject: Re: rman Ora-4031 - how to flush large pool?
> I'm sure that there is a way to tell, via querying some X$
> table or other, but my purely-speculative and uninformed
> guess would be that "flush" simply means "deallocate
> inactive" and does not include defragmenting as well, which
> would involve relocating everything remaining to leave all
> free space in a contiguous area. Deallocating inactive data
> structures is relatively painless, as I imagine very little
> synchronization has to occur.
Received on Tue Jul 15 2008 - 13:13:11 CDT

Original text of this message