Des statistiques périmées sont l’une des causes les plus fréquentes d’un plan d’exécution qui se dégrade brutalement, par exemple après un gros chargement ou une purge. Voici les deux appels que nous utilisons le plus.
1. Collecter les statistiques d’une table
BEGIN
DBMS_STATS.GATHER_TABLE_STATS (ownname => '<OWNER>' , tabname => '<TABLE_NAME>',
cascade => true, estimate_percent => 15,method_opt=>'for all indexed columns size 1', granularity => 'ALL', degree => 1);
END;
cascade => truecollecte aussi les statistiques des index de la table.estimate_percent => 15échantillonne 15 % des lignes.granularity => 'ALL'couvre la table, ses partitions et sous-partitions.
2. Collecter les statistiques d’un schéma
exec dbms_stats.gather_schema_stats( -
ownname => '<SCHEMA_NAME>', -
options => 'GATHER AUTO', -
estimate_percent => dbms_stats.auto_sample_size, -
method_opt => 'for all columns size repeat', -
degree => 15 -
)
options => 'GATHER AUTO'laisse Oracle choisir les objets qui en ont besoin (statistiques absentes ou périmées).method_opt => 'for all columns size repeat'conserve les histogrammes existants.degree => 15parallélise la collecte — à ajuster selon les CPU disponibles.