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 !