Target database memory exceed available shared memory

memoryoracleredhat

I am trying to install Oracle 12c on a RHEL 6.4 system with 64GB of memory. When I try to enable automatic memory to 48GB, I get the error:

What do I need to change to allow Oracle to use more than 32189MB?

[INS – 35172] Target database memory (49897MB) exceeds available shared memory (32189MB) on the system.

/etc/sysctl.conf contains the following so I'm not sure why it won't allow me to use more than 32G of shared memory

# Controls the maximum shared segment size, in bytes
kernel.shmmax =  68719476736
# Controls the maximum shared segment size, in bytes
#kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages



kernel.shmall = 16777216
#kernel.shmall = 1073741824
fs.file-max = 6815744
kernel.msgmni = 2878
kernel.sem = 250 32000 100 142
kernel.shmmni = 4096
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 3145728
net.ipv4.ip_local_port_range = 9000 65500
vm.min_free_kbytes = 51200
fs.file-max = 6815744

limits.conf contains the following:

oracle          soft    nproc           2047
oracle          hard    nproc           32768
oracle          soft    nofile          32768
oracle          hard    nofile          65536

Best Answer

MEMORY_TARGET needs /dev/shm filesystem with required size. By default /dev/shm size is half of the system memory. So you have to change line in /etc/fstab from:

tmpfs                   /dev/shm                tmpfs   defaults          0 0

to something like:

tmpfs                   /dev/shm                tmpfs   defaults,size=49G 0 0

df -h /dev/shm will show you tmpfs size. To avoid reboot after editing /etc/fstab you can do:

umount tmpfs
mount -a

But with such amount of memory I would go with ASMM (SGA_TARGET) and huge pages. Especially if you will have many clients connected. Overhead to manage 48GB of 4kB pages will be quite big.