Aller au contenu
polymorphe
Articles
Oracle

Oracle : Plan d execution étendu (gather_plan_statistics hint)

Romain Ferraton · · mis à jour le 11 mars 2013

Il est possible de demander à Oracle de collecter des statistiques étendues au niveau du plan d’éxécution. Il est ensuite possible de voir quelles opérations sont les plus couteuses et celles qui sont loin des estimations de l’optimiseur (ecarts entre la colonne E-ROWS et A-ROWS) :

oracle_extented_explains.jpg

Pour pouvoir obtenir un tel plan, il faut spécifier un hint gather_plan_statitics et appeler ensuite le package dbms_xplan et le procedure display_cursor en utilisant l’option de détail ‘ALLSTATS LAST’ :

  • ALLSTATS : pour avoir un détail complet des statistiques étendues
  • LAST : pour n’avoir que les données de la dernière éxécution et non des statistiques cumulées.

obtenir un plan d’éxécution étendu grace au hint gather_plan_statistics

SQL>SELECT /*+gather_plan_statistics*/ COUNT(*)  FROM  
soh_dev.sx3_gaccentry p, soh_dev.sx3_gaccentryd d,  
soh_dev.sx3_gaccentrya a WHERE  p.NUM_0 = a.NUM_0 AND d.NUM_0 = a.NUM_0 
AND p.NUM_0= d.NUM_0;
 
SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'ALLSTATS LAST'));
 
-- ou encore plus détaillé :
 
SQL> SELECT * FROM TABLE(dbms_xplan.display_cursor(NULL,NULL,'ADVANCED LAST +IOSTATS +MEMSTATS'));