ORA-27154错语解决

本文讨论了Oracle数据库中遇到的信号量不足错误及其原因,包括操作系统信号量的概念,信号量与Oracle latch的关系,以及如何通过调整SEMAPHORES参数来解决信号量不足的问题。具体步骤包括修改`/proc/sys/kernel/sem`文件中的参数值,以确保每个进程有足够的信号量资源。同时,提供了在`/etc/sysctl.conf`中自动应用这些配置的方法。

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

ORA-27154: post/wait create failed
ORA-27300: OS system dependentoperation:semget failed withstatus: 28
 

    无法获得操作系统的信号量。信号量相当于OS的内存锁,类似于oracle中的latch,每个进程要获取操作系统内存时(不是PGA或SGA),需要先获取到信号量才能申请内存。为了能保证每个进程不被阻塞,所以最好每个进程能分配到2个信号量。由于我们修改了oracle的processes参数,oracle安装建议这个参数一般设置为processes*2+15是比较保险的。检查该参数发现为300多,调整该参数为setsemsys:seminfo_semmns=1024,数据库正常启动。
ORA-27301: OS failure message: Nospace left on device
ORA-27302: failure occurred at:sskgpcreates
诊断:由于processed过大造成信号量不够
解决:
sem其实是semaphores的缩写,查看当前设置
[oracle@ebsse oracle]$ cat /proc/sys/kernel/sem
250 32000 100 128
4个数据分别对应
SEMMSL SEMMNS SEMOPM SEMMNI
如当oracle DB初始化参数文件中PROCESSES参数设置较大时,需要调整SEMAPHORES设置
SEMMSL应该设置为服务器中各个实例中最大的PROCESSES参数+10,例如,当最大的PROCESSES参数为5000时,SEMMSL应设置为5010。
SEMMNS参数应设置为SEMMSL*SEMMNI,接上例SEMMSL为5010,SEMMNS参数应为(5010*128)=641280。
SEMOPM参数应设置与SEMMSL参数相同,接上例此处应设置为5010
更改当前SEMAPHORES参数设置:
[root@ebsse oracle]# echo "5010 641280 5010 128" >/proc/sys/kernel/sem
--echo "810 103680 810 128" >/proc/sys/kernel/sem
[root@ebsse oracle]# cat /proc/sys/kernel/sem
5010 641280 5010 128
如需启动时自动应用,可在/etc/sysctl.conf增加:
kernel.sem =5010 641280 5010 128
  sysctl -p








http://blog.sina.com.cn/s/blog_799641730100q5vr.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值