ORA-27102: out of memory


64bit RedHat Linux,

[Oracle@DB ~]$ uname -a
Linux DB 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

物理内存16G,SGA分配4G时,instance可以正常启动,超过4G了,就报“out of memory”的错误。

SQL> startup nomount pfile='/home/oracle/init.ora' 
ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device

查了一下metalink,说这个问题是内核参数shmall太小的缘故,查看当前内核参数设置:

$ cat /proc/sys/kernel/shmall
2097152

通常这个值也是缺省值,建议改大。修改内核参数配置文件/etc/sysctl.cfg:

kernel.shmmax = 8294967295
kernel.shmmni = 4096
kernel.shmall = 4194304

执行生效:

[root@DB ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 8294967295
kernel.shmmni = 4096
kernel.shmall = 4194304
kernel.msgmax = 8192
kernel.msgmnb = 32768
kernel.msgmni = 2048
kernel.sem = 512 64000 128 512
fs.file-max = 65536
fs.aio-max-nr = 1048576
net.core.rmem_max = 262144
net.core.wmem_max = 262144
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_rmem = 262144 262144 262144
net.ipv4.tcp_wmem = 262144 262144 262144

再次启动实例,正常。

参考文档:

Upon startup of Linux database get ORA-27102: out of memory Linux-X86_64 Error: 28: No space left on device (文档 ID 301830.1)

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=678630284455922&id=301830.1&displayIndex=20&_afrWindowMode=0&_adf.ctrl-state=sjckvzhrj_101

--------------------------------------分割线 --------------------------------------

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

--------------------------------------分割线 --------------------------------------

相关内容