Doc ID: Note:1011658.6 Subject: SHARED MEMORY REQUIREMENTS ON UNIX Type: BULLETIN Status: PUBLISHED Content Type: TEXT/PLAIN Creation Date: 09-AUG-1995 Last Revision Date: 02-MAY-2001 PURPOSE Oracle uses shared memory and semaphores to communicate between processes and the SGA (System Global Area). There are certain requirements for shared memory and the semaphores. When the Oracle instance comes up, it allocates a certain portion of the main memory to create the SGA. If the shared memory or the semaphores are not set properly, then it gives an error related to shared memory or semaphores. The following are the recommended values for shared memory and semaphores for running a SMALL size Oracle database. These values are set at the Unix kernel level. SCOPE & APPLICATION This entry lists shared memory requirements for Unix systems. Shared Memory Requirements on Unix: =================================== The shared memory feature of the UNIX operating system is required by Oracle. The System Global Area (SGA) resides in shared memory; therefore, shared memory must be available to each Oracle process to address the entire SGA. Definitions of Shared Memory and Semaphore Parameters SHMMAX = The maximum size(in bytes) of a single shared memory segment. SHMMIN = The minimum size(in bytes) of a single shared memory segment. SHMMNI = The number of shared memory identifiers. SHMSEG = The maximum number of shared memory segments that can be attached by a process. SEMMNS = The number of semaphores in the system. SEMMNI = The number of semaphore set identifiers in the system; determines the number of semaphore sets that can be created at any one time. SEMMSL = The maximum number of sempahores that can be in one semaphore set. It should be same size as maximum number of Oracle processes (The PROCESSES parameter in the init.ora file). Recommended Semaphore and Shared Memory Parameters Operating System Shared Memory Parameters Semaphore ---------------- ------------------------ --------- Sun OS SHMSIZE = 32768 SEMMNS = 200 SHMMNI = 50 SEMMNI = 50 Solaris SHMMAX = 8388608(or larger than max SGA) SEMMNS = 200 SHMSEG = 20 SEMMSL = 50 SHMMNI = 100 SEMMNI = 70 HP/UX SHMMAX = 0x4000000 (64 Mb) SEMMNS = 128 SHMSEG = 12 SEMMNI = 10 Digital Unix SHMMAX = 4194304 SEMMNS = 60 (DEC Alpha OSF/1) SHMSEG = 32 SEMMSL = 25 Ultrix Use system default SEMMNS = 60 SEMMSL = 5 AT&T Unix SHMMAX = RAM-Dependant SEMMNS = 200 8 or 16 Mb RAM SHMMAX = 5 Mb for all RAM 32 Mb RAM SHMMAX = 8 Mb values 64 Mb RAM SHMMAX = 16 Mb 128 Mb RAM SHMMAX = 32 Mb 256 Mb RAM SHMMAX = 64 Mb 512 Mb RAM SHMMAX = 128 Mb 1024 Mb RAM SHMMAX = 256 Mb 2048 Mb RAM SHMMAX = 512 Mb SHMSEG = 6 for all RAM values SHMMIN = 1 for all RAM values Dynix/PTX SHMMAX = 11010048 SEMMNS = 200 SHMSEG = 20 SEMMSL = 85 Other parameter: NOFILES = 128 DG/UX SHMMAX = 4194304 SEMMNS = 200 SHMSEG = 15 Setting the Shared Memory and Semaphore Parameters The values of the shared memory and semaphore parameters must be set in the kernel configuration file of your operating system (OS). The location of that file is port-specific. See [NOTE:1010913.6] for its name and location on your system. To check your current shared memory and semaphore configuration you can use the command: % sysdef | more Example on HP-UX (relevant sections only): ------------------------------------------ Semaphore Related Parameters maximum value for semaphores(semaem)= 16384 Semaphore map(semmap)= 4098 number of semaphore identifiers(semmni) = 4096 total number of semaphores in the system(semmns) = 8192 number of semaphore undo structures(semmnu) = 1536 semaphore undo entries per process(semume) = 512 semaphore maximum value(semvmx) = 32767 Shared Memory Related Parameters maximum shared memory segment size in bytes(shmmax) = 536870912 minimum shared memory segment size in bytes(shmmin) = 1 maximum shared memory segments in system (shmmni) = 512 maximum shared memory segments per process(shmseg) = 512 NOTE: The SHMMAX is quite large on this system as there are 8 instances running on this system. To make changes in shared memory or semaphore parameters: 1. Shut down any running Oracle instances 2. Locate the kernel configuration file for your OS 3. Make the necessary changes using the system utilities or your favorite editor. System utilities include: OS Utility --- ------- HP-UX SAMS SCO SYSADMSH AIX SMIT Solaris ADMINTOOL 4. Reconfigure the kernel. 5. Reboot your machine. 6. Restart your Oracle instances Example, using Solaris 2.3/2.4 parameters and commands: -------------------------------------------------------- 1. Log into SQLDBA and type: SQLDBA> shutdown SQLDBA> exit 2. Log in as the superuser (root) and: # cd /etc/system 3. Add the following lines to the /etc/system file: set shmsys:shminfo_shmmax=8388608 set shmsys:shminfo_shmmin=1 set shmsys:shminfo_shmmni=100 set shmsys:shminfo_shmseg=20 set semsys:seminfo_semmns=200 set semsys:seminfo_semmni=70 4. Reconfigure the kernel: # touch /reconfigure 5. Reboot the machine: #init 6 6. Log into SQLDBA and type: SQLDBA> startup SQLDBA> exit Oracle, Shared Memory, and SGA Size There are Oracle init.ora parameters which can be modified to influence the size of the SGA. These settings of these parameters, in conjunction with OS shared memory and semaphore parameters, can influence both system and Oracle performance. For more information on configuring the SGA, see [NOTE:1008866.6]. For more information on memory and performance, see [NOTE:1012819.6] and [NOTE:1008866.6] References: =========== [NOTE:1010913.6] UNIX CONFIGURATION PARAMETERS: WHERE TO SET SEMAPHORES AND SHARED MEMORY [NOTE:1008866.6] GENERIC: HOW TO DETERMINE SGA SIZE (8.0, 8i, 7.x) [NOTE:1012819.6] OPERATING SYSTEM TUNING ISSUES ON UNIX [NOTE:1011519.6] HOW TO CHANGE SHARED MEMORY KERNEL PARAMETERS ON SUN OS Search Words: ============= SHMMAX, SHMMIN, SHMMNI, SHMSEG, SEMMNS, SEMMNI, SEMMSL . -------------------------------------------------------------------------------- Copyright (c) 1995,2000 Oracle Corporation. All Rights Reserved. Legal Notices and Terms of Use.