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;