limit配置错误导致Resource temporarily unavailable错误
Mar282014
客户从10.2.0.4升级到11.2.0.3版本后,数据库跑了一段时间发现无法登录ORACLE用户,su的时候报以下错误:
[root@maa1]# su - oracle su: cannot set user id: Resource temporarily unavailable
通常Resource temporarily unavailable错误说明是资源不足,通查需要查看limit配置和ORACLE占用的各自资源来定位问题。
[root@maa1 ~]$ cat /etc/security/limits.conf Oracle soft memlock 5242880 Oracle hard memlock 524280 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 65536
看到这里,基本可以定位导致问题的原因是限制ORACLE使用的内存资源太小导致,这里客户要限制ORACLE可以使用5G内存,可是hard部分却少写了一个8,也就是说ORACLE可以使用的内存资源只有500M,引发的这个问题。在查看ORACLE告警日志,也发现大量内存不足错误:
Wed Mar 26 10:58:07 2014 Process O000 died, see its trace file Process startup failed, error stack: Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl2/trace/orcl2_psp0_11541.trc: ORA-27300: OS system dependent operation:fork failed with status: 11 ORA-27301: OS failure message: Resource temporarily unavailable ORA-27302: failure occurred at: skgpspawn3 Process O000 died, see its trace file
TRACE文件也都是这些错误,这里就不摘录。skgpspawn3通常和SWAP相关,说明内存不足。修改limit文件,将hard限制改成和soft一样(5G),重启数据库后,问题解决。
—————————————end—————————————————————