We got below error while starting up the database.
$ sqlplus '/as sysdba'
SQL*Plus: Release 11.2.0.2.0 Production on Thu May 10 03:14:49 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to an idle instance.
SYS@BI2400R1 AS SYSDBA 10-MAY-12> 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
$ sqlplus '/as sysdba'
SQL*Plus: Release 11.2.0.2.0 Production on Thu May 10 03:14:49 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to an idle instance.
SYS@BI2400R1 AS SYSDBA 10-MAY-12> 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
Solution: This is caused by Kernel parameter setting. Since we were running many databases on a server, we should check our semaphore. Recommended value is
# semaphores: semmsl, semmns, semopm, semmni
kernel.sem = 250 32000 100 128
In our case it's
$ /sbin/sysctl -a | grep sem
error: permission denied on key 'kernel.cad_pid'
kernel.sem = 250 32000 100 142
and still we were getting the error as more than 15 databases were running on the server.
We increased the value to 275 as below
# /sbin/sysctl -w kernel.sem=275
added this new value into /etc/sysctl.conf in order the changes persist after system boot
and then started the DB.
$ . oraenv
ORACLE_SID = [B12400D1] ? BI2400R1
The Oracle base remains unchanged with value /orasw/app/oracle_test
$ sqlplus '/as sysdba'
SQL*Plus: Release 11.2.0.2.0 Production on Thu May 10 03:18:24 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to an idle instance.
SYS@BI2400R1 AS SYSDBA 10-MAY-12> startup;
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size 2226912 bytes
Variable Size 788530464 bytes
Database Buffers 805306368 bytes
Redo Buffers 7348224 bytes
Database mounted.
Database opened.
SYS@BI2400R1 AS SYSDBA 10-MAY-12> exit
Great! This helped me at the right time!
ReplyDeleteThank you!
ReplyDeleteYou are great its working fine for me as well
ReplyDeleteThank you!!
ReplyDeleteFantastic! i had the same problem and boom solution is right infront of me; Big Thankyou!!!
ReplyDeleteThank you!
DeleteThis comment has been removed by the author.
ReplyDeleteThank you as well! I shutdown my instance and was unable to get it back up until I read this article. I would also like to note to add all of the parameters you can use this string: # /sbin/sysctl -w kernel.sem="275 32000 100 142"
ReplyDeleteThank it is working
ReplyDelete