今天在启动数据库时遇到下面的报错:
SQL> startup
ORA-10997: another startup/shutdown operation of this instance inprogress
ORA-09968: unable to lock file
Linux-x86_64 Error: 11: Resource temporarily unavailable
Additional information: 5560
用root登录进去查看oracle用户的资源信息:
su -m -c 'ulimit -a' oracle
su: 无法设置用户ID: 资源暂时不可用
按经验看就是oracle用户开了太多线程,达到系统最大限制(默认1024)
ps -eL | wc -l
1395
总线程数超过1024,可能是线程满的问题。
查看系统限制配置,/etc/security/limits.conf:
oracle soft nofile 1024 ---打开文件的最大数目
oracle hard nofile 65536
oracle soft nproc 2047 ----进程的最大数目
oracle hard nproc 16384
此处oracle的进程最大数是2047。
最后确定是由于CentOS 6.4版本新增了限制配置 /etc/security/limits.d/90-nproc.conf ,以保证root用户无限制。此配置会覆盖主配置文件的设定:
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 1024
root soft nproc unlimited
问题就在这里,删除或注释 /etc/security/limits.d/90-nproc.conf 文件中1024那一行就可以了。