Shared Memory – startup database – ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device
SQLgt startupORA-27102 out of memoryLinux-x8664 Error 28 No space left on deviceI have used RHEL X8664 memory 32GB and setted sgamaxsize20G sgatarget20G and … cat procsyskern
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 setting
SHMALL = MemTotal(byte)/PAGE_SIZE
No comments:
Post a Comment