ORA-07250: spcre: semget error, unable to get first semaphore set.
Cause: An error occurred when trying to get first semaphore set.
Action: Check errno. Verify that system is configured to have semaphores. Verify that enough semaphores are available. Additional information indicates how many semaphores were requested.
?
ORA-07250: spcre: semget error, unable to get first semaphore set 是一个系统错误,指的是由于某种原因,Oracle 无法访问操作系统的信号量集合(semaphore sets)的互斥量(mutexes)。也就是说,Oracle无法获取系统资源中的第一个信号集,从而导致无法启动。
ORA-07250: spcre: semget error, unable to get first semaphore set
Cause: The semaphore needed by Oracle could not be allocated. The operating system error on which the message is based may vary; commonly, this error is “no semaphores available”.
Action: See accompanying error message.
在一些Linux系统上,某条Oracle数据库的启动和访问会受到苛刻的系统资源(比如信号量、互斥量)限制,尤其是缺少足够的信号量和互斥量时,就会发出ORA-07250: spcre: semget error, unable to get first semaphore set 错误信息。
(1)检查Admimistrator用户下的$ORACLE_HOME/dbs目录下是否有一些.dbf 文件,比如:lkSID.dbf文件。如果.dbf文件仍然存在,说明上一次Oracle数据库启动时发生了该错误,但并没有启动成功。
(2)可以尝试清理及重启系统,再尝试重新启动Oracle数据库。
(3)配置操作系统的信号量参数,比如,在Linux下可以查看/etc/sysctl.conf 文件,修改内核参数kernel.sembs。查看内核参数的命令是:sysctl -a | grep sem。
(4)对于一般的Oracle数据库,可以通过修改/etc/security/limits.conf文件,来提高可使用的信号量,文件内容如下所示:
oracle soft nproc 2047
oracle hard nproc 16382
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft memlock 1048576
oracle hard memlock 2097152
oracle soft sem 256
oracle hard sem 1024
(5)在Oracle数据库重新启动后,若此时报错信息仍没有改变,可以重置被损坏的信号量,重置命令为:semop -i ,需要先使用ipcs -s命令查看信号号,然后才编辑semop -i 命令。