 |
|
Oracle
Tips by Burleson |
Using Oradebug to Debug Spinning Processes
In the case of a Spin situation the session events may or may not be
static depending on where in the code the spinning is taking place.
It would be expected that the session would be utilizing resources
heavily such as CPU and memory.
For a Spin situation it is important to determine which area of the
code the session is spinning in. Some indication of this may be
derived from the event however it is usually necessary to produce an
errorstack of the process a few times for analysis by support:
>sqlplus /nolog
SQL> connect sys/sys as sysdba
Password: xxxxxxx
Connected.
SQL> oradebug setospid <SPID>
SQL> oradebug unlimit
SQL> oradebug dump errorstack 3
Where the SPID is the operating system process identifier, you can
get it from v$process.
Note that more detailed information can be found by dumping
systemstate information for the instance:
ALTER SESSION SET EVENTS
'IMMEDIATE TRACE NAME SYSTEMSTATE LEVEL 10';
The systemstate tracefile will be created in your USER_DUMP_DEST
directory. Get the Process ID of the problem session from the
V$PROCESS:
SELECT PID FROM V$PROCESS WHERE
ADDR=
(SELECT PADDR FROM V$SESSION
WHERE SID=sid_of_problem_session);
The systemstate dump includes information for each process, search
for 'PROCESS id' and look up the wait event by doing a search on
'waiting for'.
This is a book excerpt from:
Using the
Oracle oradebug Utility
Debugging Oracle Applications
Mike Ault
ISBN: 0-9740716-7-6
http://www.rampant-books.com/ebook_oradebug.htm
|