Table of Contents
In this solution let us see how to increase the value of the semaphore in Linux for increasing the processes while we try to start the Oracle multi-instances. It will come under the tuning and optimizing category of Oracle databases.
When this issue occurred?
After creating a new database on an existing production database server. This guide will help to resolve the semaphore issue or if you are looking for
How to Change Kernel Semaphore Limits in RHEL and CentOS Linux Servers?
Solution for following Errors
This is the actual error we are getting while trying to bring up the newly created database.
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
Check current Value
The current value can be checked in two ways or more ways.
[root@gateway ~]# sysctl -a | grep -i "kernel.sem" kernel.sem = 32000 1024000000 500 32000 kernel.sem_next_id = -1 [root@gateway ~]#
Are cat the /proc filesystem
[root@gateway ~]# cat /proc/sys/kernel/sem
32000 1024000000 500 32000
[root@gateway ~]#
Else we can use the ipcs command to list the same.
[root@gateway ~]# ipcs -l
------ Messages Limits --------
max queues system wide = 32000
max size of message (bytes) = 8192
default max size of queue (bytes) = 16384
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 18014398509465599
max total shared memory (kbytes) = 18014398509481980
min seg size (bytes) = 1
------ 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
[root@gateway ~]#
Making temporary changes
We can make some changes without adding into sysctl.conf. It can be done by, enable writing a value to variable.
# echo 250 32000 100 428 > /proc/sys/kernel/sem
# sysctl -w kernel.sem="250 32000 100 428"
Making Permanent Changes
To change the value of the semaphore we can perform by editing the below file.
# vi /etc/sysctl.conf
kernel.sem = 250 32000 100 428
semaphores Value has been configured to take effect we need to run
# sysctl -p
That’s it we can now start the Oracle Database instances by avoiding above error.