文档解释
ORA-07252: spcre: semget error, could not allocate semaphores.
Cause: Semget system call returned an error. Possible resource limit problem.
Action: Check errno. Verify that enough semaphores are available in system. If additional errors occur in destroying the semaphore sets then sercose[0] will be non-zero. If this occurs, remove the semaphore sets using ipcrm.
官方解释
ORA-07252: spcre: semget error,该错误发生在Oracle分配内部结构时,一个特定的情况是使用System V信号量。「semget」显示 Oracle 无法从信号量集中分配一个信号量。
常见案例
ORA-07252: spcre: semget error案例常见于并发性很高,并且系统并发数超过最大允许值的系统。
正常处理方法及步骤
这个错误的处理主要是增加系统的信号量数量,建议使用 /dev/shm 来放大信号量,不管把Semaphores设置为最大值,请记住按照原则“尽可能少,尽可能小”(Max= Minimum)。 如果没有问题,增加一倍,直到数目 尽可能少,尽可能小 的限制。
(1)执行命令 # ipcs -ls,查看系统信号量的最大数量:
(2)例如系统默认的 Semaphores 设置为 256,如果超出这个参数,则需要增加相应的值。
(3)执行命令 # vi /etc/sysctl.conf,在文件最前面加上下列两行:
(4)kernel.sem=256 32000 32 256
(5)执行命令 # sysctl -p,使 /etc/sysctl.conf 中定义的设置在系统中立即生效。
(6)重新登陆 Oracle 用户,并重新启动 Oracle 服务器。