Tuesday, September 1, 2009

"project.max-shm-memory" is NOT equal to "shmsys:shminfo_shmmax"

In Oracle documentation 10g/11g Oracle Installation Guide for Solaris, these examples are a bit misleading, such that some readers think "project.max-shm-memory" in resource control facility is just a literal replacement for "shmsys:shminfo_shmmax" in /etc/system.

Actually, it does not work that way.

shmsys:shminfo_shmmax
Description :
Maximum size of system V shared memory segment that can be created. This parameter is an upper limit that is checked before the system sees if it actually has the physical resources to create the requested memory segment.
Attempts to create a shared memory section whose size is zero or whose size is larger than the specified value will fail with an EINVAL error.
Reference:
http://docs.sun.com/app/docs/doc/817-1759/6mhfh76gs?l=en&a=view&q=shmsys%3Ashminfo_s

project.max-shm-memory
Description :
Total amount of System V shared memory allowed for this project.
Reference:
http://docs.sun.com/app/docs/doc/819-2450/rmctrls-3?l=en&a=view

Conclusion:
"shmmax" specifies the limit for single shared memory segment, and "max-shm-memory" specifies the limit for the whole project.


Referenced Oracle Metalink document id 859898.1: The ORA-27102 error is generated on Solaris 10 having apparently correct settings of kernel parameters.