ORA-27154 on Database Startup After System Crash

[grid@hostname ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.3.0 Production on Fri Jul 3 11:31:12 2015

Copyright (c) 1982, 2011, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup;

ORA-27154: post/wait create failed

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

ORA-27301: OS failure message: File exists

ORA-27302: failure occurred at: sskgpcreates

Solution:

You need to remove stray shared memory segments and semaphores.

To get a list of shared memory and semaphore id's:

[oracle@hostname ~]$ ipcs -a

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

0x00000000 425984 oracle 640 4096 0

0x00000000 458753 oracle 640 4096 0

0x1efd4768 491522 oracle 640 4096 0

------ Semaphore Arrays --------

key semid owner perms nsems

0x00000000 1540124 root 666 1

0x96b1110c 5275679 oracle 640 684

0xd95b59b9 4227104 root 666 2

0xa6797c54 5406753 oracle 640 684

0x000003d4 4292642 root 644 1

------ Message Queues --------

key msqid owner perms used-bytes messages

To delete shared memory:

[oracle@hostname ~]$ ipcrm -m 425984

[oracle@hostname ~]$ ipcrm -m 458753

[oracle@hostname ~]$ ipcrm -m 491522

To delete semaphores:

[oracle@hostname ~]$ ipcrm -s 5275679

[oracle@hostname ~]$ ipcrm -s 5406753

[oracle@hostname ~]$ ipcs -a

------ Shared Memory Segments --------

key shmid owner perms bytes nattch status

------ Semaphore Arrays --------

key semid owner perms nsems

0x00000000 1540124 root 666 1

0xd95b59b9 4227104 root 666 2

0x000003d4 4292642 root 644 1

------ Message Queues --------

key msqid owner perms used-bytes messages

Once you have removed those owned by Oracle and the dba group you are able to startup the database.

SQL> startup;

ASM instance started

Total System Global Area 321507328 bytes

Fixed Size 2228024 bytes

Variable Size 294113480 bytes

ASM Cache 25165824 bytes

ASM diskgroups mounted

Explanation

The system crash left the shared memory and semaphores owned by the crashed Oracle instance on the system. These have to be removed before enough resources are available to bring the Oracle instance back up.