Restaurer les statistiques à un point dans le passé
OracleStatistiquesCommande
-- 1) Retention and the oldest point you can return to:
SELECT DBMS_STATS.GET_STATS_HISTORY_RETENTION AS retention_days,
DBMS_STATS.GET_STATS_HISTORY_AVAILABILITY AS oldest_available
FROM dual;
-- 2) Statistics history of the table:
SELECT table_name, partition_name,
TO_CHAR(stats_update_time,'YYYY-MM-DD HH24:MI:SS TZH:TZM') AS stats_update_time
FROM dba_tab_stats_history
WHERE owner = 'CUSTOMER_APP' AND table_name = 'SALES'
ORDER BY stats_update_time DESC;
-- 3) Return to the point before the plan regressed:
BEGIN
DBMS_STATS.RESTORE_TABLE_STATS(
ownname => 'CUSTOMER_APP',
tabname => 'SALES',
as_of_timestamp => TIMESTAMP '2026-10-07 22:00:00 +03:00',
no_invalidate => FALSE);
END;
/
-- Whole schema: DBMS_STATS.RESTORE_SCHEMA_STATS('CUSTOMER_APP', <timestamp>)
-- Change the retention (days):
-- EXEC DBMS_STATS.ALTER_STATS_HISTORY_RETENTION(31);Ce que fait la commande
DBMS_STATS sauvegarde les statistiques précédentes dans SYSAUX avant chaque collecte (31 jours par défaut). Les procédures RESTORE_* ramènent les statistiques d'une table/d'un schéma à leur état à l'instant donné ; avec no_invalidate=>FALSE, les curseurs sont reparsés immédiatement.
Quand l'utiliser
Comme retour arrière le plus rapide lorsqu'une régression de plan suit la collecte de statistiques nocturne, et pour tester si un changement a été causé par les statistiques.
Attention
Aucune licence requise. Les statistiques verrouillées ne peuvent pas être restaurées (déverrouillez d'abord). La collecte automatique suivante ramène de nouvelles statistiques après la restauration ; pour une correction permanente, définissez des préférences de table, verrouillez les statistiques ou utilisez une SQL plan baseline. Une longue rétention fait grossir SYSAUX (tables WRI$_OPTSTAT_*).
Voir aussi
- Trouver les statistiques obsolètes et définir des préférences de statistiques par table (prefs)
- Verrouiller et déverrouiller les statistiques d'une table/d'un schéma
- Collecter les statistiques en attente (pending), les tester et les publier
- Configurer les statistiques incrémentales pour une table partitionnée