Saturday, July 16, 2011

Upon startup of Linux database get ORA-27102: out of memory Linux-X86_64

When trying to increase the SGA to approach half available RAM with an Oracle 64bit version on a Linux 64bit operating system, even though shmmax is set to match half the amount of RAM, you get the following error when trying to start the instance:

SQL> startup nomount
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device

Changes

shmall is too small, most likely is set to the default setting of 2097152
$ cat /proc/sys/kernel/shmall
2097152

Cause

shmall is the total amount of shared memory, in pages, that the system can use at one time.

Solution

shmall = total Sga's size on server / page_size

Set shmall equal to the sum of all the SGAs on the system, divided by the page size.
The page size can be determined using the following command:

$ getconf PAGE_SIZE
4096

For example, if the sum of all the SGAs on the system is 16Gb and the result of '$ getconf PAGE_SIZE' is 4096 (4Kb) then
set shmall to 4194304 pages

As the root user set the shmall to 4194304 in the /etc/sysctl.conf file:
kernel.shmall = 4194304
then run the following command:
# sysctl -p
# cat /proc/sys/kernel/shmall
4194304

NOTE:
The above command loads the new value and a reboot is not necessary

No comments:

Post a Comment