DBAtlas · Veritabanı operasyon atlası

Bir session için 10046 trace aç/kapat ve TKPROF ile özetle

OraclePerformans

Komut

-- 1) Hedef session'i ve trace dosyasini bul:
SELECT s.sid, s.serial#, s.username, s.module, p.tracefile
FROM   v$session s
  JOIN v$process p ON p.addr = s.paddr
WHERE  s.username = 'MUSTERI_APP';

-- 2) Trace ac (waits + binds = level 12 karsiligi):
BEGIN
  DBMS_MONITOR.SESSION_TRACE_ENABLE(
    session_id => <sid>,
    serial_num => <serial#>,
    waits      => TRUE,
    binds      => TRUE,
    plan_stat  => 'ALL_EXECUTIONS');
END;
/
-- Dogrula: SELECT sql_trace, sql_trace_waits, sql_trace_binds FROM v$session WHERE sid = <sid>;

-- 3) Sorunlu islem bitince kapat:
EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE(session_id => <sid>, serial_num => <serial#>);

-- Alternatifler:
-- Kendi session'in: ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
-- Tek SQL_ID, tum session'lar: ALTER SYSTEM SET EVENTS 'sql_trace[SQL: <sql_id>] wait=true, bind=true';
--   kapat: ALTER SYSTEM SET EVENTS 'sql_trace[SQL: <sql_id>] off';
-- Connection pool icin: DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE / SERV_MOD_ACT_TRACE_ENABLE

-- 4) OS'te TKPROF ile ozetle (en pahali SQL basta):
-- $ tkprof /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_12345.trc /tmp/ora_12345.prf \
--     sys=no sort=exeela,fchela,prsela waits=yes aggregate=yes

Ne yapar?

Extended SQL trace (10046), session'ın çalıştırdığı her SQL için parse/execute/fetch sürelerini, wait event'leri ve bind değerlerini trace dosyasına yazar; TKPROF bunu SQL bazında toplanmış okunabilir rapora çevirir.

Ne zaman kullanılır?

AWR/ASH'ın yetmediği, tek bir kullanıcı işleminin uçtan uca nerede vakit harcadığını kanıtlamak gerektiğinde; uygulama ile DB arasındaki round-trip (SQL*Net) sorunlarında.

Dikkat

Lisans gerektirmez. Trace dosyası hızla büyür ve hedef session'a ek yük bindirir; kısa tut ve mutlaka kapat (DBA_ENABLED_TRACES ile açık kalanları kontrol et). binds=TRUE hassas veriyi (kimlik no, kart vb.) trace dosyasına yazar. ALTER SESSION SET EVENTS için ALTER SESSION yetkisi gerekir (yoksa ORA-01031). TKPROF varsayılan olarak bind değerlerini göstermez; ham .trc dosyasını sakla.

DBAtlas'ta aç →

İlgili