Enabling session tracing in oracle database
1. Identify sql client session to be traced
For example you are planning to trace the session for module ABC , identify the SPID for session e.g. 13762780
alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss';
set line 1000
col OSUSER for a10
col SID for 999
col USERNAME for a20
col MACHINE for a20
set pagesize 100
SELECT distinct
a.sid,
a.serial#,
b.spid, sq.sql_id,
b.pid,
a.username,
a.machine,
a.status,
a.module,
a.osuser,
a.LAST_CALL_ET/60 "Inac_Min",a.logon_time,c.event, sq.sql_text
FROM
v$session a,
v$process b,
v$session_wait c,
v$sqlarea sq
WHERE
a.username IS NOT NULL
AND
a.paddr=b.addr
and a.username='GENEVA_ADMIN' and a.sql_hash_value=sq.hash_value
and (upper(a.module) like '%ABC%')
and c.sid=a.sid;
2. Enable trace
For example if spid 13762780 has to be traced
oradebug setospid 13762780
oradebug unlimit
oradebug Event 10046 trace name context forever, level 12
oradebug tracefile_name
3. disable trace
Incase session does not get disconnect the session tracing keep on filing trace file which may lead to panic utilization of file system
oradebug setospid 13762780
oradebug Event 10046 trace name context off
4. Analyzing trace file using tkprof
tkprof trace analyzer will extract the trace file generated to showcase execcution plan of each query executed in session
tkprof testdb_ora_13762780.trc tk_testdb_ora_13762780.out explain=test_mis/test_mis123 waits=yes sort=exeela
5. More methods of tracing
Following command can be executed to enable trace for current session tracing
alter session set tracefile_identifier='abc_trace';
3. disable trace
Incase session does not get disconnect the session tracing keep on filing trace file which may lead to panic utilization of file system
oradebug setospid 13762780
oradebug Event 10046 trace name context off
4. Analyzing trace file using tkprof
tkprof trace analyzer will extract the trace file generated to showcase execcution plan of each query executed in session
tkprof testdb_ora_13762780.trc tk_testdb_ora_13762780.out explain=test_mis/test_mis123 waits=yes sort=exeela
5. More methods of tracing
Following command can be executed to enable trace for current session tracing
alter session set tracefile_identifier='abc_trace';
alter session set sql_trace=TRUE;
6. More methods of enabling bulk tracing and analyzing trace with condition
In case you need to enable tracing on complete database , below trigger can be created which will trace each session connected on DB till trigger is in enable state
Note: If trigger is in invalid state then it will decline new connection to DB leading to outage
CREATE OR REPLACE TRIGGER trace AFTER logon ON database begin execute immediate 'Alter session set tracefile_identifier=''ABC_traces''';
execute immediate 'Alter session set events ''10046 trace name context forever, level 12'''; end;
/
One trace files are generated in bulk due to trigger you may use below code to search for ABC@TESTLAB002 in trace and generate tkprof for same
for i in `ls -lrt | grep -i ABC_traces.trc | awk '{ print $9 }'`
do
#echo $i
if [ `cat $i | grep -i ABC@TESTLAB002 | wc -l | awk '{ print $1 }'` -gt 0 ] ; then
echo $i
tkprof $i $i.out explain=test_mis/test_mis123 waits=yes sort=exeela
fi;
done
No comments:
Post a Comment