Belirli bir oturum için trace başlatılması

Bir session başladıktan sonra trace başlatılma ihtiyacı olduğunda , ya da bir oturumda çalıştırılan sorguların belirlenmesi için DBMS_MONITOR.session_trace_enable prosedürü ile kullanılabilir. Prosedürün kullanımı ve aldığı parametreler aşağıdaki gibidir.

DBMS_MONITOR.SESSION_TRACE_ENABLE(
    session_id   IN  BINARY_INTEGER DEFAULT NULL,
    serial_num   IN  BINARY_INTEGER DEFAULT NULL,
    waits        IN  BOOLEAN DEFAULT TRUE,
    binds        IN  BOOLEAN DEFAULT FALSE,
    plan_stat    IN  VARCHAR2 DEFAULT NULL);

Session id  1153 olan bir oturum için trace başlatmak için aşağıdaki komut kullanılabilir.

SQL> EXEC DBMS_MONITOR.session_trace_enable(session_id =>1153, waits=>TRUE, binds=>TRUE);

PL/SQL procedure successfully completed.

binds=>TRUE şekilnde verilmediği takdir , ilgili session boyunca kullanılan değişkenler yazılmayacaktır. Bu yüzden mutlaka binds=>TRUE şeklinde kullanılmalıdır.

Bu oturumdaki bilgileri hangi dosyaya yazdığını ise aşağıdaki sorgu ile öğrenebiliriz.

SQL> SELECT p.tracefile
FROM   v$session s
       JOIN v$process p ON s.paddr = p.addr
WHERE  s.sid = 1153;

TRACEFILE
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/testdb/TESTDB2/trace/TESTDB2_ora_11011484.trc

Trace işlemini kapatmak için DBMS_MONITOR.SESSION_TRACE_DISABLE prosedürünü kullanabiliriz.

DBMS_MONITOR.SESSION_TRACE_DISABLE(
   session_id      IN     BINARY_INTEGER DEFAULT NULL,
   serial_num      IN     BINARY_INTEGER DEFAULT NULL);

Yukarıdaki örnekte başlattığımız trace işlemini aşağıdaki gibi kapatabiliriz.

SQL> exec DBMS_MONITOR.SESSION_TRACE_DISABLE(session_id =>1153);

PL/SQL procedure successfully completed.

Trace dosyasının içeriği aşağıdaki gibi olacaktır.

Trace file /u01/app/oracle/diag/rdbms/testdb/TESTDB2/trace/TESTDB2_ora_11011484.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1
System name:    AIX
Node name:      oradb2
Release:        1
Version:        7
Machine:        00F745F54C00
Instance name: TESTDB2
Redo thread mounted by this instance: 2
Oracle process number: 64
Unix process pid: 11011484, image: oracle@oradb2


*** 2018-11-29 17:23:21.648
*** SESSION ID:(1153.50309) 2018-11-29 17:23:21.648
*** CLIENT ID:() 2018-11-29 17:23:21.648
*** SERVICE NAME:(TESTDB) 2018-11-29 17:23:21.648
*** MODULE NAME:(TOAD 13.0.0.80) 2018-11-29 17:23:21.648
*** ACTION NAME:(59930432,284684816,285133360) 2018-11-29 17:23:21.648
 
CLOSE #4574988368:c=23,e=39,dep=0,type=1,tim=56146470874665
LOBARRTMPFRE: c=9,e=14,p=0,cr=0,cu=0,tim=56146470889817
=====================
PARSING IN CURSOR #4574986224 len=356 dep=0 uid=150 oct=3 lid=150 tim=56146470890334 hv=2159962230 ad='7000104eb336e90' sqlid='dpt20ua0bwu3q'
Select schemaname, decode(sql_hash_value, 0, prev_hash_value, sql_hash_value) hash,
       decode(sql_hash_value, 0, RawToHex(prev_sql_addr), RawToHex(sql_address)) address
       , decode(sql_id, null, prev_sql_id, sql_id) sql_id
       , decode(sql_child_number, null, prev_child_number, sql_child_number) sql_child_number
from v$session
where sid = :sid
END OF STMT
PARSE #4574986224:c=290,e=475,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=0,tim=56146470890333
=====================
PARSING IN CURSOR #4577893528 len=37 dep=1 uid=0 oct=3 lid=0 tim=56146470891198 hv=1398610540 ad='7000104e38da7b8' sqlid='grwydz59pu6mc'
select text from view$ where rowid=:1
END OF STMT
PARSE #4577893528:c=315,e=520,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,plh=0,tim=56146470891198
BINDS #4577893528:
 Bind#0
  oacdty=11 mxl=16(16) mxlc=00 mal=00 scl=00 pre=00
  oacflg=18 fl2=0001 frm=00 csi=00 siz=16 off=0
  kxsbbbfp=110dd1858  bln=16  avl=16  flg=05

 

Loading

Leave Your Comment