Oracle : Mise en place des traces

Pour régler un problème sous oracle, vous pouvez activer les traces pour obtenir plus d’informations.
Ces traces sont disponibles de différentes façons :

  • Au niveau de l’instance
  • Au niveau de la session
  • Les attentes internes (pas traiter ici)
  • Avec des variables bind (pas traiter ici)

Pour obtenir les traces au niveau de la session, il faut changer le paramètre sql_trace et augmenter le paramètre max_dump_file_size dans le init.ora.
Après redémarrage de l’instance, les traces vont se stocker dans le répertoire défini par la variable user_dump_dest.

Pour retrouver un le répertoire, vous pouvez exécuter cette requête en system :

SELECT value FROM v$parameter WHERE name = 'user_dump_dest';

Pour obtenir les traces au niveau de l’instance, il faut, dans un premier temps, vérifier et dans le cas échéant, ajouter des droit à l’utilisateur surveillé :

GRANT CREATE ANY TRIGGER TO "XXXX" ;
GRANT ALTER SESSION TO "XXXX" ;

Ensuite, il faut ajouter un trigger à l’utilisateur surveillé :

CREATE OR REPLACE TRIGGER trace AFTER LOGON ON SCHEMA
BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION SET MAX_DUMP_FILE_SIZE=1700000000';
EXECUTE IMMEDIATE 'ALTER SESSION SET TRACEFILE_IDENTIFIER=''MATRACE''';
EXECUTE IMMEDIATE 'ALTER SESSION SET SQL_TRACE=TRUE';
END;

NB: TRACEFILE_IDENTIFIER permet de préfixer les fichier trc avec MATRACE dans notre exemple.

Enfin, après les nouvelles connexions, les traces vont apparaître toujours dans le répertoire défini par la variable user_dump_dest 🙂

C’est bien d’avoir des traces mais il faut pouvoir les exploiter…
Ce sera le sujet du prochain article !

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.