Bonjour,

J'ai une grosse table partitionnée sur laquelle je lance un calcul de statistique de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
DBMS_STATS.GATHER_TABLE_STATS(ownname => NULL,
                tabname => 'MA_TABLE', 
                partname => NULL, 
                estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, 
                block_sample => FALSE, 
                method_opt => 'FOR ALL COLUMNS SIZE 1', 
                degree => 4, 
                granularity => 'DEFAULT', 
                cascade => TRUE, 
                stattab => NULL, 
                statid => NULL, 
                statown => NULL, 
                no_invalidate => FALSE);
DBMS_STATS.GATHER_TABLE_STATS(ownname => NULL,
                tabname => 'MA_TABLE', 
                partname => NULL,
                estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, 
                block_sample => FALSE, 
                method_opt => 'FOR COLUMNS FLAG_CM, NO_ANNEE SIZE 10', 
                degree => 4, 
                granularity => 'DEFAULT', 
                cascade => TRUE, 
                stattab => NULL, 
                statid => NULL, 
                statown => NULL, 
                no_invalidate => FALSE);
Au bout de quelques heures, Oracle me retourne l'erreur ORA-01555.
ORA-01555: snapshot too old: rollback segment number 10 with name "_SYSSMU10$" too small

Pour éviter cela je pourrais augmenter le undo_retention mais j'aimerais savoir si en calculant les statistiques partition par partition j'évite ce problème ?

Merci d'avance,
Sylvain