Oracle FAQ Your Portal to the Oracle Knowledge Grid

Home -> Community -> Usenet -> c.d.o.server -> Re: Dynamic SGA and pinned

Re: Dynamic SGA and pinned

From: Howard J. Rogers <>
Date: Fri, 6 Aug 2004 05:52:08 +1000
Message-ID: <41128fbb$0$15686$>

"Karsten Schmidt" <> wrote in message
> Hi there,
> >
> > There may be subtleties about the way Solaris uses memory that I am
> > of, but as far as I know, if you set SGA_MAX_SIZE on any platform to a
> > value, then that amount of RAM is immediately 'stolen' from the
> > system and allocated to Oracle's own exclusive use. That large chunks of
> > that shared memory segment are not *actually* used, because your
> > shared_pool_size or db_cache_size are set to low amounts is irrelevant:
> > large shared memory segment has nevertheless been allocated to Oracle's
> > from the total pool of available physical RAM, and hence that RAM is not
> > available for any other programs running on that server to make use of.
> >
> on a decent OS this is not entirely true.

That needs qualifying. Connor has already mentioned that it is probably true for Solaris. Are you saying it is true for Linux and Windows? I have seen no evidence of that. And evidence on the matter would be nice to have, one way or the other, I don't mind.

> Oracle will initially allocate the memory (using malloc and such).

Which is what I've been saying.

> But then as other processes come along, and want to use RAM, it will
> get paged out. After a while, the allocated but un-used portion of the
> SGA wil reside on disk in the swap area, and not occupy physical RAM.

Which is what Connor and, I believe on re-reading, the original poster were claiming to be the case for Solaris, and which I'm happy to accept is the case (I can't test Solaris). Is it true for the two most popular platforms on which Oracle finds itself installed? And "after a while" is sounding a bit vague, in any case.

> unless, as the OP pointed out, the SGA is locked in phys memory, which
> would prevent the virtual memory subsystem from paging it out. You can
> use the lock_sga parameter to control this. (false by default, which
> would allow paging out the SGA)
> quote from the 9.2 manuals:
> >>
> LOCK_SGA locks the entire SGA into physical memory. It is usually
> advisable to lock the SGA into real (physical) memory, especially if
> the use of virtual memory would include storing some of the SGA using
> disk space. This parameter is ignored on platforms that do not support
> it.

So if we all followed Oracle's own advice on the matter, my original statement that the entire SGA_MAX_SIZE is irretrievably pinched from *real* memory and stays that way would be entirely correct without qualification, would it not?

Whatever: we need some evidence.

> Karsten
Received on Thu Aug 05 2004 - 14:52:08 CDT

Original text of this message