Posts Tagged ‘Database Startup Error’

Shared Memory Tuning: Startup database – ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device

May 22nd, 2018, posted in Linux OS, Oracle Queries
Share
Oracle on linux,Oracle,linux,Oracle DBA,Apps DBA,sun linux 10,sun linux,Oracle Database dba,Oracle database,Oracle Application, Linux, linux, solaris administrator, sun linux,SGA/PGA sizes,solaris SGA/PGA ,linux SGA/PGA sizes, prtconf,ORA-27102,ORA-27101: shared memory realm does not exist,ORA-27101,shared memory realm does not exist,SVR4 Error: 2: No such file or directory,Oracle Linux,Linux Oracle 
SQL> startup
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device
I have used RHEL X86_64 + memory (32GB) and setted sga_max_size=20G + sga_target=20G and …
$ cat /proc/sys/kernel/shmmax
26843545600
What wrong with my kernel tuning… So, I checked metalink (301830.1) and some recommend from RHEL
They told; set SHMALL to the total amount of physical RAM divided by page size.

SHMALL =>Total amount of shared memory available (bytes or pages)

then:
Check Page Size:
$ getconf PAGE_SIZE
4096
Determine the system wide maximum number of shared memory pages:
$ cat /proc/sys/kernel/shmall
2097152
My system 64bits with memory 32GB, then 1024 * 1024 * 1024 * 32 / 4096 = 8388608
So, change kernel.shmall = 8388608
$ su - root
# echo 8388608 > /proc/sys/kernel/shmall
Or modify /etc/sysctl.conf file:
kernel.shmall=8388608
and
# sysctl -p
After changed… check and startup database again:
$ cat /proc/sys/kernel/shmall
8388608
 
SQL> startup

.

.

.

--- NO ERROR ---
From this idea with memory 32GB
mem=$(free|grep Mem|awk '{print$2}')
totmem=$(echo "$mem*1024"|bc)
huge=$(grep Hugepagesize /proc/meminfo|awk '{print $2}')
max=$(echo "$totmem*75/100"|bc)
all=$(echo "$max/$huge"|bc)
echo "kernel.shmmax = $max"
echo "kernel.shmall = $all"
Result:
kernel.shmmax = 25213120512, kernel.shmall = 12311094
However, This case “ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device” , solved by set SHMALL = MemTotal(byte)/PAGE_SIZE
and …
I hope to hear your idea about kernel tuning with Oracle Database.
Share