10046-Trace für eine Session aktivieren/deaktivieren und mit TKPROF zusammenfassen
OraclePerformanceBefehl
-- 1) Find the target session and its trace file:
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 = 'CUSTOMER_APP';
-- 2) Enable trace (waits + binds = equivalent of level 12):
BEGIN
DBMS_MONITOR.SESSION_TRACE_ENABLE(
session_id => <sid>,
serial_num => <serial#>,
waits => TRUE,
binds => TRUE,
plan_stat => 'ALL_EXECUTIONS');
END;
/
-- Verify: SELECT sql_trace, sql_trace_waits, sql_trace_binds FROM v$session WHERE sid = <sid>;
-- 3) Disable once the problem operation completes:
EXEC DBMS_MONITOR.SESSION_TRACE_DISABLE(session_id => <sid>, serial_num => <serial#>);
-- Alternatives:
-- Your own session: ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';
-- Single SQL_ID, all sessions: ALTER SYSTEM SET EVENTS 'sql_trace[SQL: <sql_id>] wait=true, bind=true';
-- disable: ALTER SYSTEM SET EVENTS 'sql_trace[SQL: <sql_id>] off';
-- For a connection pool: DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE / SERV_MOD_ACT_TRACE_ENABLE
-- 4) Summarize with TKPROF on the OS (most expensive SQL first):
-- $ 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=yesWas es tut
Extended SQL Trace (10046) schreibt für jede von der Session ausgeführte SQL Parse-/Execute-/Fetch-Zeiten, Wait Events und Bind-Werte in eine Trace-Datei; TKPROF macht daraus einen lesbaren, je SQL aggregierten Report.
Wann einsetzen
Wenn AWR/ASH nicht ausreichen und du Ende-zu-Ende belegen musst, wo eine einzelne Benutzeroperation ihre Zeit verbringt; bei Roundtrip-Problemen zwischen Anwendung und Datenbank (SQL*Net).
Vorsicht
Keine Lizenz erforderlich. Trace-Dateien wachsen schnell und belasten die Ziel-Session zusätzlich; halte es kurz und deaktiviere es immer (prüfe DBA_ENABLED_TRACES auf Überbleibsel). binds=TRUE schreibt sensible Daten (Ausweisnummern, Kartennummern usw.) in die Trace-Datei. ALTER SESSION SET EVENTS erfordert das Privileg ALTER SESSION (sonst ORA-01031). TKPROF zeigt Bind-Werte standardmäßig nicht an; bewahre die rohe .trc-Datei auf.
Verwandte Einträge
- AWR-Snapshot erstellen und AWR-Report zwischen zwei Snapshots erzeugen
- AWR-Diff-Report (Compare Period) zwischen zwei Zeiträumen
- Top Wait Events und Top-SQL der letzten Minuten aus ASH
- ADDM-Analyse ausführen und Report abrufen
- SQL-Monitor-Report abrufen (laufende oder abgeschlossene lange SQL)
- Tatsächlichen Ausführungsplan mit Row-Source-Statistiken anzeigen (ALLSTATS LAST)