Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> Re: Oracle/Solaris Kernel Tunables Question
In article <3E7F51E7.20509_at_echeeba.com>, Chuck wrote:
>
> Currently we have:
> set shmsys:shminfo_shmmax=2097152000
>
> Does this line limit the SGA to 2 GB?
>
Hi CC,
Not necessarily -
shmmax sets the maximum size of shared memory a process can claim in one request to the os.
Limits depends on the value of other shared mem settings
shmmin is the minimum size of a shared memory seg. You wouldn't usually need to alter this shmseg is the maximim number of shared memory segs a process can attach shmmni is the maximo number of shared memory identifiers that exist system wide
As an extreme example:
if shmseg was 1 and you tried to start an instance with an sga > 2gb it would fail (oracle processes would claim 1 shared mem seg of 2gb and then fail claiming the next segment as shmseg would limit things to 1 shared seg per process)
if shmseg was 2 or higher then the oracle processes would claim 2 segments. One of the maximum specified by shmmax and the other for the rest. The instance would start successfully
In the same way:
if shmmni as 3 and you started 3 instances with sgas < 2gb assuming no other applications using shared mem then trying to start a 4th one would fail because shmmni would limit system wide shared mem to 3 segments
The rule of thumb i use is
set shmmax to size of phys memory or the maximum expected sga size set shmseg to a value that will allow multiple segments. This is less important if shmmax is sized right set shmmni to a value representing the maximum # of instances you expect to run on the box (+ any shared memory requirements of non oracle apps)
Normally you configure these to allow oracle to get the shared mem for the sga in 1 contigous segment.
hope this helps,
D. Received on Mon Mar 24 2003 - 18:18:31 CST