ORA-27300: OS system dependent operation:semget failed with status: 28 - 2

tolywang發表於2015-11-10
Database Startup Fails with ORA-27300: OS system dependent operation:semget failed with status: 28 (文件 ID 949468.1)  

Oracle Database - Enterprise Edition - Version 10.1.0.2 to 11.2.0.2 [Release 10.1 to 11.2]
Information in this document applies to any platform.

SYMPTOMS
On a linux server, when an additional database instance is brought up, getting errors: 
SQL> startup nomount 
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

CHANGES
An additional database has been created on a linux server. 
PROCESSES parameter in init.ora set to the correct value, accordingly. 
Linux Kernel Parameter for Semaphore - Total 32000 semaphore are available in the system but still gets an error - ORA-27300. 
$ ipcs -ls 

------ Semaphore Limits -------- 
max number of arrays = 128 
max semaphores per array = 250 
max semaphores system wide = 32000 
max ops per semop call = 100 
semaphore max value = 32767

CAUSE
In theory, 32000 semaphores are available in the system and one semaphore identifier can accommodate a maximum of 250 semaphores with 
the configuration above. 
But ipcs command shows each semaphore identifier accomodates maximum of 156 semaphores by Oracle. 

$ ipcs << For this case, it has around 100 semaphore identifiers being used without bringing up the additional instance. 
.. 

------ Semaphore Arrays -------- 
key semid owner perms nsems 
0x450e15bd 0 root 666 1 
0x0000cace 32769 root 666 1 
0x358b172c 327683 oracle 660 104 
0x9053d038 11075588 oracle 660 156 
0x9053d039 11108357 oracle 660 156 
0x9053d03a 11141126 oracle 660 156 
0x9053d03b 11173895 oracle 660 156 
.. 
According to this figure, the maximum available semaphores in this server will be 156 x 128 = 19968, not 32000.

SOLUTION
SEMMNI should be increased to accomodate more semaphores. 

1. Query the current semaphore values in the kernel 
     # /sbin/sysctl -a | grep sem

2. Modify SEMMNI value in the /etc/sysctl.conf. 
From 
kernel.sem = 250 32000 100 128 
To 
kernel.sem = 250 32000 100 200

3. # /sbin/sysctl -p

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-1827034/,如需轉載,請註明出處,否則將追究法律責任。

相關文章