数据库启动报错ORA-27154,27300,27301,27302

本文介绍了当Oracle数据库因进程数设置过低导致错误时的解决步骤。通过调整数据库的process参数并相应地修改系统内核信号量参数,最终解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天因为oracle 链接数设置的是150 ,报错超过最大porcess限额了。
所以修改了:

alter system set processes=300 scope=spfile;

然后重启数据库,好了,开始报错:

ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device 
ORA-27302: failure occurred at: sskgpcreates

磁盘空间是充足的,报错最后一行 sskgp。因为数据库设置的process超过了root设置的系统平台参数。

/sbin/sysctl -a |grep sem

看到系统的内核信号量参数设置(默认配置)
kernel.sem = 250 32000 100 128
从左到右分别为SEMMSL、SEMMNS、SEMOPM和SEMMNI。
1)SEMMSL:设置每个信号灯组中信号灯最大数量,推荐的最小值是250。
对于系统中存在大量并发连接的系统,推荐将这个值设置为 PROCESSES初始化参数加10。

2)SEMMNS:设置系统中信号灯的最大数量。操作系统在分配信号灯时不会超过LEAST(SEMMNS,SEMMSL*SEMMNI)。事实上,如果SEMMNS的值超过了SEMMSL*SEMMNI是非法的,因此推荐SEMMNS的值就设置为SEMMSL*SEMMNI。Oracle推荐SEMMNS的设置不小于32000,假如数据库的PROCESSES参数设置为600,则SEMMNS的设置应为:

SQL> select (250+10)*128 from dual;
(250+10)*142
33280

3)SEMOPM:设置每次系统调用可以同时执行的最大信号灯操作的数量。
由于一个信号灯组最多拥有SEMMSL个信号灯,因此有推荐将SEMOPM设置为SEMMSL的值。
Oracle验证的10.2和11.1的SEMOPM的配置为100。

4)SEMMNI:设置系统中信号灯组的最大数量。Oracle10g和11g的推荐值为142。

开始修改:

vi /etc/sysctl.cnf
kernel.sem= 310 46020 100 142
/sbin/sysctl -p

然后重启数据库,正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方-phantom

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值