一、问题描述(虚拟机环境 red hat linux5.5 + oracle 11g r2):
SQL> startup
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed withstatus: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates
二、分析
1、查看系统semaphores参数配置:
cat /proc/sys/kernel/sem
结果:100 100 32 128
对应 semsl semmns semopm semni
常见参数描述:
shmmax-共享内存段,建议设大点, 达到最大SGA
shmmin - 最小的共享内存段.
shmmni - 共享内存标志符的数量.
shmseg - 一个进程可分配的最大内存段数.
shmall - 最大可允许的内存数,比SGA还要大.
semmns - 信号量,跟ORACLE的PROCESS数有关.
semmsl - 一个信号量中最大的信号量数.
semmsl应设置为服务器中各个实例中最大的processes参数+10,semmns参数应为semmsl* semmni
semopm参数与semmsl相同
2、查看oracle pfile文件:cat $ORACLE_HOME/admin/orcl/pfile/init.ora.9312012233717 | grepprocesses
结果为processes=150
因此semmsl = 150 + 10 =160 , semopm= 160, semmns =160 * 128 = 20480
接下来 备份sem文件,echo "160 20480 160 128 > /proc/sys/kernel/sem"
设置启动时自动应用: vi/etc/sysctl.conf ,将kernel.sem = 100 100 修改为:
kernel.sem = 160 20480 160 128
三、修改参数,重启系统,oracle启动成功