Suse 12/Redhat 7中的ORA-27300: OS system dependent operation:fork failed with status: 11的故障处理

今天同事遇到一个问题,也是以前经常遇到的ORA-27300: OS system dependent operation:fork failed with status: 11,ORA-27301: OS failure message: Resource temporarily unavailable,ORA-27302: failure occurred at: skgpspawn5问题。按照以前的处理办法就是换衣系统参数设置有问题,导致Oracle无法分配出新的线程。

不过通过检查,发现操作系统Oracle用户的线程并没有达到nproc设置的限制值。通过在操作系统上执行命令“ps h -Led -o user | sort | uniq -c | sort -n”。可以发现Oracle就开了255个线程。而在/etc/security/limits.conf下发现nproc设置的值是65536.

那么这个问题就不是系统设置的参数问题,通过进一步分析定位,发现和MOS文档Database And ASM Instance Ora-27300 OS System Dependent Operation Fork Failed With Status 11 (文档 ID 2331884.1) 很类似。因为当前这套数据库是12.2的RAC,安装在Suse 12的版本上。而这篇文档就是在12.2.0.1上才会出现,而且报错的进程也是psp0进程。文档中还提到一个现象就是”oraagent.bin is consistently taking up more than 50% of CPU.”。通过观察,我们发现oraagent.bin确实占用了高于50%的cpu。

这个问题的原因就是,在Redhat7或者或者是Suse 12上,使用了systemd,这个在redhat 6和suse 11上没有,当这个启动之后,就会忽略掉/etc/security/limits.conf下的设置。而该文件的一个参数,DefaultTasksMax设置为默认值(512),限制了可在节点上创建的最大任务数。此设置还影响OS上的maxpid值。

最终的解决方案就是
编辑/etc/systemd/system.conf。将DefaultTasksMax设置为’infinity’,重启操作系统。

这个问题最终被定义是新版本操作系统的问题,需要我们在安装集成的过程中提前设置。

关注dbDao.com的新浪微博

扫码加入微信Oracle小密圈,了解Oracle最新技术下载分享资源

TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569