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
![]()
