La version détaillée est en anglais sur mon blog à dbi services.
Ici un résumé, laissez un commentaire pour plus de détail en français est nécessaire.
Vous avez une requête qui prend trop de temps et vous voulez de l’aide pour analyser le plan d’exécution ? Alors, vous devez fournir le plan avec toute les infos pertinentes, et correctement formatées. Pas de plan sans la partie prédicat. Pas d’estimation de cardinalité sans les valeurs réelles. Pas de copie d’écran: soit un plan venant de dbms_xplan.display_cursor, soit, si vous avez Tuning Pack, un plan SQL Monitor.
Sans Tuning Pack
Paramétrage de la session:
alter session set statistics_level=all;
Puis l’exécution de la requête, en se mettant dans le bon schema et en assignant des valeurs aux bind variables:
alter session set current_schema=SCOTT;
-- define variables
variable minimum_salary number
-- bind values
exec :minimum_salary := 3000
-- execute the query
SELECT * FROM DEPT JOIN EMP USING(DEPTNO) WHERE SAL>:minimum_salary;
Et enfin, la sortie du plan en ficher texte:
select * from table(dbms_xplan.display_cursor(format=>'allstats last +outline +peeked_binds'));
spool off
Avec Tuning Pack
Paramétrage de la session:
Puis l’exécution de la requête, avec le hint MONITOR:
alter session set current_schema=SCOTT;
-- define variables
variable minimum_salary number
-- bind values
exec :minimum_salary := 3000
-- execute the query
SELECT /*+ monitor */ * FROM DEPT JOIN EMP USING(DEPTNO) WHERE SAL>:minimum_salary;
Et enfin, la sortie du plan en ficher html:
select dbms_sqltune.report_sql_monitor(report_level=>'all',type=>'active') from dual;
spool off