Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
15 octobre 2008 3 15 /10 /octobre /2008 19:45
Bonsoir, 

Dans l'article précédent, j'ai fait mention de la possibilité d'activer une trace pertinente en executant la commande suivante


SET AUTOTRACE ON


 Peut-être certains ont-ils essayé et ont la désagrable surprise d'avoir l'erreur suivante:


SP2-0618 : Impossible de trouver l'identificateur de session. Le rôle PLUSTRACE doit être activé.
SP2-0611 : Erreur lors de l'activation de l'état STATISTICS



Et oui notre ami ORACLE, n'est pas que sympathique, il lui arrive d'être farceur. Allez savoir pourquoi ce rôle n'est pas activé par défaut.

La procédure pour l'activer est relativement simple.
Il faut se connect en sys as sysdba dans une session SQL + et lancer les commandes suivantes:


 SQL> @?\sqlplus\admin\plustrce.sql
 SQL>  GRANT PLUSTRACE TO PUBLIC;



le "?" (uniquement sous WINDOWS il me semble) permet d'accéder à ORACLE_HOME. 
Je pourrai très bien restreindre le GRANT des utilisateurs nommés. Mais honnetement, je ne vois pas l'interêt.

 Pour le moment je n'ai parlé que de l'option SET AUTOTRACE ON, mais il en existe d'autre.

Option Explication
SET AUTOTRACE OFF Il s'agit de la valeur par défaut.Dans ce cas aucune trace n'est générée.
SET AUTOTRACE ON EXPLAIN Cette option n'affiche que le plan d'execution de la requête executée.
SET AUTOTRACE ON STATISTICS Cette option n'affiche que les statistiques.
SET AUTOTRACE ON Ici, nous avons les deux : Plan d'execution + Statistiques
SET AUTOTRACE TRACEONLY Cette option est identique à la précédente à l'exception de l'affichage du résultat de la requête. Ce peut être très utile dans le cas de SELECT retournant plusieurs milliers de lignes.


Les statistiques données par AUTOTRACE sont très importantes et peuvent vous permettent dans certains cas de faire le bon choix entre deux requêtes.
Il n'est pas forcement nécessaire d'être un export en tuning pour comparer deux tableaux de statistiques et en tirer des conséquences.

Souvenez vous de l'article précédent ou nous opposions une requête à plus de trois millions de "consistent gets" (jointure de type nested loop) contre 23000 (jointure par hashage).
Sans avoir activer AUTOTRACE à ON, il n'était pas forcément évident d'effectuer le bon choix.

Bonne soirée !

LAO. 
 
Partager cet article
Repost0

commentaires