Tracer une session

Activer les traces

Activer les traces sur la session courante.

  ALTER SESSION SET EVENTS '10046 trace name context forever, level 8';

Activer les traces sur une autre session.

  EXEC DBMS_MONITOR.session_trace_enable(session_id =>1234, serial_num=>1234, waits=>TRUE, binds=>FALSE);

Tracer une requête particulière avec son SQL_ID.

  ALTER SYSTEM SET EVENTS 'sql_trace 
  [sql: sql_id=3s1yukp05bzg6|aca4xvmz0rzup] bind=true, wait=true';

Activer les traces sur toute l’instance.

  ALTER system SET EVENTS '10046 trace name context forever, level 8';

Tracer une application particulière comme SQLPLUS.

  exec dbms_monitor.serv_mod_act_trace_enable('SYS$USERS', 'SQL*Plus', dbms_monitor.all_actions, TRUE, TRUE);

Désactiver les traces

Désactiver les traces sur la session courante.

  ALTER SESSION SET EVENTS '10046 trace name context off';

Désactiver les traces sur une autre session.

  EXEC DBMS_MONITOR.session_trace_disable(session_id =>1234, serial_num=>1234);

Désactiver les traces sur toute l’instance.

  ALTER system SET EVENTS '10046 trace name context off';

Stopper la trace d’une requête particulière avec son SQL_ID.

  ALTER SYSTEM SET EVENTS 'sql_trace 
  [sql: sql_id=3s1yukp05bzg6|aca4xvmz0rzup] off';

Stopper la trace d’une application particulière comme SQLPLUS.

  exec dbms_monitor.serv_mod_act_trace_disable('SYS$USERS', 'SQL*Plus', dbms_monitor.all_actions);

Vérifier les traces actives

Vérifier les traces actrivées par DBMS_MONITOR.

  SELECT * FROM dba_enabled_traces;

Vérifier les traces au niveau de l’instance.

  SELECT name, display_value, isdefault, ismodified 
  FROM v$parameter WHERE NAME='sql_trace';

Vérifier les traces au niveau des sessions.

  select * from v$session where sql_trace='ENABLED';

Vérifier les traces avec ORADEBUG.

  oradebug setmypid
  oradebug eventdump system

Identifier un fichier de trace

SET LINESIZE 100
COLUMN trace_file FORMAT A60

SELECT s.sid,
       s.serial#,
       pa.value || '/' || LOWER(SYS_CONTEXT('userenv','instance_name')) ||    
       '_ora_' || p.spid || '.trc' AS trace_file
FROM   v$session s,
       v$process p,
       v$parameter pa
WHERE  pa.name = 'user_dump_dest'
AND    s.paddr = p.addr
AND    s.audsid = SYS_CONTEXT('USERENV', 'SESSIONID');

Autre façon :

SELECT value
FROM   v$diag_info
WHERE  name = 'Default Trace File';

Pour une autre session :

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

Soure oracle-base.com
Source dba-scripts.com