ORA-27157 ORA-27300 ORA-27301
目录:
- 问题现象
- 原因分析
- 解决方案
问题现象:
收到同事反馈,数据库无法连接。于是登录服务器发现,数据库莫名挂掉。实例crash,日志中记录截取一段如下:
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ckpt_9364.trc: ORA-27157: OS post/wait facility removed ORA-27300: OS system dependent operation:semop failed with status: 43 ORA-27301: OS failure message: Identifier removed ORA-27302: failure occurred at: sskgpwwait1
原因分析:
在rhel7.2中,systemd-logind服务引入了一个新特性:
在一个user完全退出OS后会remove掉所有的IPC对象。
该特性由/etc/systemd/logind.conf参数文件中RemoveIPC选项来控制。RemoveIPC的默认值是yes。详细请看man logind.conf(5)。
因此,当最后一个oracle或者grid用户退出时,操作系统会remove掉这个user的shared memory segments和semaphores。
数据库用户使用的都是共享内存,一旦共享内存段被remove掉,就会出现这个问题。
解决方法:
以root用户执行。
sed -i 's/RemoveIPC=yes/RemoveIPC=no/g' /etc/systemd/logind.conf
===================
天行健,君子以自强不息
地势坤,君子以厚德载物
===================