oracle trace analyse performance session
Oracle - Activer une trace 10046 afin d'analyser une session
Dans le cas d'un bug ou d'un problème de performance, mettre en place une trace peut aider à analyser le problème.
Pour tracer juste une ou plusieurs requête, voir toute une session :
$ sqlplus / as sysdba alter session set tracefile_identifier='10046'; alter session set timed_statistics = true; alter session set statistics_level=all; alter session set max_dump_file_size = unlimited; alter session set events '10046 trace name context forever,level 12'; -- Lancer la/les requête(s) exit;
Si la session est lancée par un traitement applicatif, il faut récupérer son SID, puis l'utiliser ensuite pour trouver le OSPID :
select p.PID,p.SPID,s.SID from v$process p,v$session s where s.paddr = p.addr and s.sid = <SID>;
Enfin, dans une session SQL*Plus, lancer les commandes suivantes pour activer la trace :
connect / as sysdba oradebug setospid <OSPID> oradebug unlimit oradebug event 10046 trace name context forever,level 12
Si la taille du fichier trace devient trop grosse, il suffit de lancer une petite commande pour désactiver la trace :
connect / as sysdba oradebug setospid 9834 oradebug event 10046 trace name context off
Pour finir, le fichier trace se trouvera dans le répertoire indiqué par le paramètre “user_dump_dest”. Pour pouvoir lire le fichier de trace, l'utilisation d'un outil tel que TkProf est recommande. Pour cela, lancer la commande suivante :
tkprof fichier.trc fichier.out sort=fchela,exeela,prsela