Can you afford to bounce the server? If so make increase the SEMMSL value in the etc/system file and bounce the server and retry starting it. On the other hand if you cannot do that, follow the folloing steps to deallcate some of the semaphores.

If you have two or more instances on your machine, perform the following
steps to ensure you do not remove the shared memory segments and semaphores on
the instances that are running.

1. At the os level, list the shared memory segments and semaphores for the
instance that you cannot start.

% ipcs -b

2. Log into svrmgrl.

% svrmgrl

3. Connect internal

svrmgrl> connect internal

4. List the semaphores and shared memory segments currently running on this
machine.

svrmgrl> oradebug ipc

5. Remove the shared memory segments and semaphores with PID's not associated
with the instances that are currently running on this machine as displayed
by the previous svrmgrl command.

% ipcrm -m /* remove shared memory segments

% ipcrm -s /* remove semaphores


----------------------------------------

But looking at the state looks like you have reached the max limit and there are no way for you to even try the deallocation. One way bounce the server after adding the changes. Then restart the instances. That should fix you the problem.

Sam