今天刚装了Oracle 11g,配制好了之后启动数据库时遇到下面的错误:
SQL> startup
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates
看了一下文档,ORA-2715是么解释的:
ORA-27154: post/wait create failed
Cause: internal error, multiple post/wait creates attempted simultaneously
Action: check errno and contact Oracle Support
上网找了一些资料后,调整了下/etc/sysctl.conf,修改kernel.sem为
kernel.sem =5010 641280 5010 128
使它生效
#sysctl -p
====================================================
如下官方文档:
APPLIES TO:
Oracle Database - Enterprise Edition - Version 9.2.0.1 to 10.2.0.5 [Release 9.2 to 10.2]
Oracle Database - Enterprise Edition - Version 11.2.0.4 to 11.2.0.4 [Release 11.2]
Oracle Solaris on SPARC (64-bit)
Solaris Operating System (SPARC 64-bit)
SYMPTOMS
Attempting to startup instance, fails with error
ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occured at: sskgpcreates
CHANGES
CAUSE
SEMMNS is set to 230 against 1024(Minimum Recommended).
The low value of SEMMNS is preventing to start the instance.
The SEMMNS parameter should be set to the sum of the PROCESSES parameter for each Oracle database, adding the largest one twice, and then adding an additional 10 for each database.
SEMMSL is set to 60 against 256 (Minimum Recommended).
This is recommended in both the Oracle 9.2 and 10.2 installation guides
SOLUTION
To implement the solution, please execute the following steps:
1. Set the kernel parameter as recommended in
Oracle 9.2 Installation Guide:
SEMMNS 1024
SEMMSL 256
Oracle 10.2 Installation Guide (for Solaris 8 and 9):
semsys:seminfo_semmns 1024
semsys:seminfo_semmsl 256
(refer to 10.2 Installation Guide for specific recommendations on Solaris 10 parameter settings)
Or
2. Reduce the Processes in Init.ora file to small value.
(This is useful when you don't want to reboot the Unix server as a change of kernel setting requires a reboot for changes to be reflected)
NOTE:
1. If you have previously changed your kernel for another program to levels equal to or higher than the levels recommended in the Installation Guide, then do not change the settings. If the levels are too low, change them to levels at least as high as those in the table.
2. If you change the kernel settings, save the /etc/system file and restart the system to reflect the change
==============================================================
下面一段是关于一点关于信号量的系统参数的解释:
The kernel parameter sem consists of 4 tokens, SEMMSL, SEMMNS, SEMOPM and SEMMNI. SEMMNS is the result of SEMMSL multiplied by SEMMNI. The database manager requires that the number of arrays (SEMMNI) be increased as necessary. Typically, SEMMNI should be twice the maximum number of connections allowed (MAXAGENTS) multiplied by the number of logical partitions on the database server computer plus the number of local application connections on the database server computer.
翻译:
系统内核包括四个标记参数,SEMMSL, SEMMNS, SEMOPM 和 SEMMNI. SEMMNS应该是SEMMSL 乘以 SEMMNI的结果. 数据库管理程序需要这一组数据都进行相应的增长. 比如 SEMMNI 应该是 2*(服务器允许最大连接数)* (数据库服务器逻辑分区数)+ (数据库允许最大本地应用连接数)