Events 10046 et 10053

Deux types de traces sont très utiles si vous utilisez Oracle 10g et que vous voulez « tuner » des requêtes SQL…

  • L’évènement 10046 est équivalente à SQL_TRACE=TRUE. Elle permet d’ajouter plus d’informations comme le contenu des variables de type BIND (level 4), les informations de type wait events (level 8) et les 2 (level 12). Le fichier situé dans le répertoire correspondant au paramètre user_dump_dest peut alors être utilisé avec TKPROF
  • L’évènement 10053 permet de tracer le calcul du CBO et d’expliquer ainsi pourquoi un plan est choisi plutôt qu’un autre.

Pour positionner ces évènements il y a plusieurs possibillités; pour la session en cours, vous pouvez simplement utiliser :

SQL> alter session set events '10046 trace name context forever, level 4';
SQL> alter session set events '10053 trace name context forever, level 1';
Pour arrêter les traces utilisez :
SQL>
alter session set events '10046 trace name context off';
SQL>
alter session set events '10053 trace name context off';
Si vous cherchez à tracer des sessions différentes, utilisez les packages DBMS_SUPPORT ou DBMS_MONITOR (Event 10046) comme ci-dessous :
SQL> exec DBMS_SUPPORT.start_trace(waits=>TRUE, binds=>FALSE);
SQL> exec DBMS_SUPPORT.stop_trace;
SQL> EXEC DBMS_MONITOR.session_trace_enable(session_id =>1234, serial_num=>1234, waits=>TRUE, binds=>FALSE);
SQL> EXEC DBMS_MONITOR.session_trace_disable(session_id =>1234, serial_num=>1234);

Vous pouvez également utiliser le package suivant :
SQL> exec dbms_system.set_ev(sid, serial#, 10046, 4)
SQL> exec dbms_system.set_ev(sid, serial#, 10046, 0)

GarK!