This appendix contains information about administering Oracle Database on Oracle Solaris.
It contains the following topic:
Oracle Solaris Shared Memory Environment
This section describes how Oracle Database uses shared memory models like Optimized Shared Memory (OSM), Intimate Shared Memory (ISM), and Dynamic Intimate Shared Memory (DISM).
It contains the following topics:
Starting with 12c, Oracle Database uses the Optimized Shared Memory (OSM) model of Oracle Solaris on Oracle Solaris 10 1/13 or later and Oracle Solaris 11 SRU 7.5 or later systems to implement Automatic Memory Management.
OSM allows dynamic resizing of System Global Area (SGA) without restarting the instance. It does not use the oradism
utility and swap disk space. OSM is NUMA-optimized.
Note:
Ensure that you set theMEMORY_MAX_TARGET
to a greater value than MEMORY_TARGET
to utilize Optimized Shared Memory.To verify if Oracle Solaris uses Optimized Shared Memory (OSM), enter the following command:
$ ipcs -dm
If the column ALLOC
shows an integer, it specifies that OSM is in use. If the column ALLOC
shows a hyphen, it specifies that OSM is not in use.
On Oracle Solaris systems, Oracle Database uses Intimate Shared Memory (ISM) for shared memory segments because it shares virtual memory resources between Oracle processes. ISM causes the physical memory for the entire shared memory segment to be locked automatically.
On Oracle Solaris 10 systems prior to Oracle Solaris 10 1/13 and Oracle Solaris 11 SRU 7.5, Dynamic Intimate Shared Memory (DISM) is available. This enables Oracle Database to share virtual memory resources between processes sharing the segment, and at the same time, enables memory paging. The operating system does not have to lock down physical memory for the entire shared memory segment.
On Oracle Solaris, to determine if shared memory is in use, use the ipcs -im
command. For example:
% ipcs -im IPC status from <system> as of Thu Aug 19 01:09:30 PDT 2013 T ID KEY MODE OWNER GROUP ISMATTCH Shared Memory: m 11 0xacea4150 --rw-rw---- oracle dba 160
The ISMATTCH
field shows 160 processes attached to this shared memory segment. However, ISMATTCH
does not distinguish between Intimate Shared Memory (ISM) and Dynamic Intimate Shared Memory (DISM).
On Oracle Solaris 10 systems prior to Oracle Solaris 10 1/13 and Oracle Solaris 11 SRU 7.5, to identify if ISM or DISM is in use, or which memory locking service is active, use the pmap –xs
command. For example:
% ps -aef | grep ora | grep smon oracle 12524 1 0 05:40:13 ? 0:25 ora_smon_prod % pmap –xs 12524 | grep ism 0000000380000000 38010880 38010880 - 38010880 256M rwxsR [ ism shmid=0xb ] 0000000C90000000 131072 131072 - 131072 4M rwxsR [ ism shmid=0xb ] 0000000C98000000 16 16 - 16 8K rwxsR [ ism shmid=0xb ]
The output from the pmap –xs
command shows three ism
address ranges implying that ISM is in use. If DISM locks the memory ranges, then the output shows dism
address ranges.
Oracle Database uses the oradism
utility to lock and unlock shared memory. The oradism
utility is automatically set up during installation. It is not required to perform any configuration tasks to use dynamic SGA.
The process name for the oradism
utility is ora_dism_sid
, where sid
is the system identifier. When using DISM, this process is started during instance startup, and automatically quits when the instance is shut down.
If a message is displayed in the alert log saying that the oradism
utility is not set up correctly, then verify that the oradism
utility is located in the $ORACLE_HOME/bin
directory and that it has superuser privileges.
Note:
Optimized Shared Memory (OSM) does not use theoradism
utility.Oracle Database automatically uses Optimized Shared Memory (OSM) on Oracle Solaris systems where OSM is available. See "About Optimized Shared Memory" for more information on OSM.
On systems where OSM is not available, Oracle Database automatically selects Intimate Shared Memory (ISM) or Dynamic Intimate Shared Memory (DISM) based on the following criteria:
Oracle Database uses DISM if it is available on the system, and if the value of the SGA_MAX_SIZE
initialization parameter is larger than the size required for all SGA components combined. This enables Oracle Database to lock only the amount of physical memory that is used.
Oracle Database uses ISM if the entire shared memory segment is in use at startup or if the value of the SGA_MAX_SIZE
parameter equals or smaller than the size required for all SGA components combined.
Regardless of whether Oracle Database uses ISM or DISM, it can always exchange the memory between dynamically sizable components such as the buffer cache, the shared pool, and the large pool after it starts an instance. Oracle Database can relinquish memory from one dynamic SGA component and allocate it to another component.
Because shared memory segments are not implicitly locked in memory, when using DISM, Oracle Database explicitly locks shared memory that is currently in use at startup. When a dynamic SGA operation uses more shared memory, Oracle Database explicitly performs a lock operation on the memory that is put to use. When a dynamic SGA operation releases shared memory, Oracle Database explicitly performs an unlock operation on the memory that is freed, so that it becomes available to other applications.
Note:
Do not set theLOCK_SGA
parameter to TRUE
in the server parameter file. If you do, then Oracle Database 12c cannot start.