Oracle Utilities and Tools SYSRESV Exclusive For UNIX Systems
Oracle Utilities and Tools SYSRESV Exclusive For UNIX Systems
Purpose:
========
The purpose of this bulletin is to introduce a new utility, "sysresv", provided in Oracle 8.1.5
and above.
SYSRESV Utility:
================
This utility was the result of enhancement request 566223 [BUG: 566223]:
The sysresv utility included with Oracle 8.1.5 and above provides instance status (and OS
resources used) for specified ORACLE_SIDs. This utility is especially useful when multiple
instances are running. OS resources can be removed using this utility if the specified
instance is detected to be dead.
This utility may be useful when an instance has crashed or was aborted and memory and
semaphores related to this instance were not cleaned up automatically. This utility is also
helpful in determining which instance is running. The sysresv utility, located in $O_H/bin, can
be used from locations other than $O_H/bin.
Usage:
------
sysresv:
usage :
sysresv [-if] [-d <on/off>] [-l sid1 <sid2> ...]
-i : Prompt before removing ipc resources for each sid
-f : Remove ipc resources silently, over rides -i option
-d <on/off> : List ipc resources for each sid if on
-l sid1 <sid2> .. : apply sysresv to each sid
Examples:
---------
/u02/app/oracle/product/8.1.7> sysresv
Instance is running:
/u03/app/oracle/product/8.1.6> sysresv
Attempting to remove memory and semaphores using sysresv when Oracle detects an
instance is running:
/u03/app/oracle/product/8.1.6> sysresv -f
[Sysresv shows memory and semaphores exist but Oracle determines the instance is not
alive. Cleanup is needed.]
/u03/app/oracle/product/8.1.6> sysresv
/u03/app/oracle/product/8.1.6> sysresv -i
/u03/app/oracle/product/8.1.6> sysresv
If you need to remove memory segments, and Oracle detects the instance is alive through
sysresv:
% ipcrm -m <memid>
Example:
% ipcrm -m 16437
If you need to remove semaphores, and Oracle detects the instance is alive through sysresv:
% ipcrm -s <semid>
Example:
% ipcrm -s 12320802
115235.1
Resolving ORA-7279 or ORA-27146 errors when starting instance
Problem Description
-------------------
If you are using version 8.1.5 or 8.1.6, you receive the following error instead of the ora-7279
when attempting to start an instance:
These errors happen whenever attempting to start an instance, which includes, but is not
limited to, creating a new database during an install, creating a new database with an existing
install, starting an existing database which had the initSID.ora parameter PROCESSES
changed, or starting an existing database which was either shutdown incorrectly or crashed.
Solution Description
--------------------
The problem is that there are not enough semaphores to start the instance. This can be
resolved based on one of the two scenarios below:
Scenario 1
----------
If no new instances have been created and you are trying to start an existing database which
was shutdown incorrectly or crashed, the semaphores from the crashed instance may still be
allocated and will need to be removed.
Step 1)
Before removing semaphores, you should be certain that there are no running instances
using them. First check for running instances using the following command:
% ps -ef | grep -v grep | grep pmon
If there are no pmon processes running, then there should be no semaphores owned by the
oracle user, and any semaphores owned by the oracle user can safely be removed.
See steps 3 and 4 for the commands to list and remove semaphores.
Step 2)
If you have multiple instances running, you will need to either shut them down or determine
which semaphores are being used by each instance. It is recommended that you shut down
all of the instances, but if this is not possible, then follow the instructions below.
A) If the running instances are version 8.1.x or higher, set your environment to that of the
running instance, then run the following command:
% $ORACLE_HOME/bin/sysresv
This will show you the semaphore ids being used by this instance. Make a note of them and
repeat the sysresv command for each running instance.
B) If you are not running version 8.1.x or higher, use the following commands to get a listing
of semaphores:
% svrmgrl
svrmgr> connect internal
svrmgr> oradebug ipc
Repeat these commands for each running instance making note of the "Semaphore
identifiers" for each.
Step 3)
Now get a list of all of the allocated semaphores on the system using the following
command:
Compare the output of the ipcs command with the notes you made from the sysresv
command or oradebug ipc command , and remove any semaphores that do not belong to a
running instance.
Step 4)
You can remove semaphores using the following command:
% ipcrm -s <semid>
where <semid> is the semaphore id shown in the second column of the ipcs output titled ID.
Step 5)
Now try to start your instance again.
Scenario 2
----------
You are trying to start a new instance, or an existing instance that had the initSID.ora
parameter PROCESSES changed. You will need to raise the kernel parameter SEMMNS.
Set the kernel parameter SEMMNS to double the sum of all of the initSID.ora PROCESSES
parameters on the system.
For example, if you have 5 instances with the initSID.ora PROCESSES parameter set to 25, 50,
100, 200, and 250, then set the kernel parameter SEMMNS equal to 1250.
After making changes to the kernel parameter SEMMNS, you will be required to reboot the
system. Depending on your operating system, you may also be required to rebuild the kernel.
For more information on changing kernel parameters, please consult your OS documentation
and/or your OS vendor.
Explanation
-----------
When an Oracle instance is started, oracle will attempt to allocate all of the needed
semaphores. If it is unable to do so, it will generate either an ora-7279 or ora-27146 error and
will fail to start the instance.
References
----------
Note: 15566.1
Additional Search Words
-----------------------