# RE: How to use dbms_shared_pool.purge for heap 6 only?

• From: "Bobak, Mark" <Mark.Bobak@xxxxxxxxxxxx>
• To: "Brandon.Allen@xxxxxxxxxxx" <Brandon.Allen@xxxxxxxxxxx>, "'oracle-l@xxxxxxxxxxxxx'" <oracle-l@xxxxxxxxxxxxx>
• Date: Tue, 24 Nov 2009 15:22:51 -0500

```Hi Brandon,

Wow, talk about cryptic.  It took some thinking, but I think I've got it.

The "<<" operator is a binary shift.  So, 1<<0 means take the binary digit '1'
and shift it zero positions left.  So, it's 1.  1<<6 means, take the one and
shift it left 6 places.  So, 1000000, so, 1000000+1 = 1000001 = 0x41 = 65.

A much easier way to express it is, if you want to dump heaps 6 and one, use
the value 2^6 + 2^1.

But, that's a hardcore C coder for you!  Let's use binary shift notation! :)

Hope that helps,

-Mark

From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On
Behalf Of Allen, Brandon
Sent: Tuesday, November 24, 2009 2:59 PM
To: 'oracle-l@xxxxxxxxxxxxx'
Subject: How to use dbms_shared_pool.purge for heap 6 only?

Does anyone know how to purge just the plan (heap 6) out of the shared pool
with dbms_shared_pool.purge?

The documentation gives the following explanation for the heaps parameter, but
I can't figure out what it means:

"Heaps to be purged. For example, if heap 0 and heap 6 are to be purged:

1<<0 | 1<<6 => hex 0x41 => decimal 65, so specify heaps =>65.Default is 1, that
is, heap 0 which means the whole object would be purged"

I understand that 0x41=65, but I don't get this part:  "1<<0 | 1<<6 => hex
0x41" - Can anyone translate that to English?

I already checked MOS too and couldn't find any better explanation there.

Thanks,
Brandon

________________________________
Privileged/Confidential Information may be contained in this message or