Activer/désactiver la trace 10046 pour une session et la résumer avec TKPROF
OraclePerformancesCommande
-- 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=yesCe que fait la commande
La trace SQL étendue (10046) écrit dans un fichier trace les temps de parse/execute/fetch, les événements d'attente et les valeurs de bind de chaque SQL exécuté par la session ; TKPROF en fait un rapport lisible agrégé par SQL.
Quand l'utiliser
Lorsque AWR/ASH ne suffisent pas et que vous devez prouver de bout en bout où une opération utilisateur passe son temps ; pour les problèmes d'aller-retour application-base (SQL*Net).
Attention
Aucune licence requise. Les fichiers trace grossissent vite et ajoutent une surcharge à la session cible ; gardez-la courte et désactivez-la toujours (vérifiez DBA_ENABLED_TRACES pour les restes). binds=TRUE écrit des données sensibles (numéros d'identité, numéros de carte, etc.) dans le fichier trace. ALTER SESSION SET EVENTS exige le privilège ALTER SESSION (sinon ORA-01031). Par défaut, TKPROF n'affiche pas les valeurs de bind ; conservez le fichier .trc brut.
Voir aussi
- Prendre un snapshot AWR et générer un rapport AWR entre deux snapshots
- Rapport AWR diff (compare period) entre deux périodes
- Principaux événements d'attente et principaux SQL depuis ASH pour les dernières minutes
- Lancer une analyse ADDM et obtenir son rapport
- Obtenir un rapport SQL Monitor (SQL long en cours ou terminé)
- Afficher le plan d'exécution réel avec les statistiques row source (ALLSTATS LAST)