L'erreur ORA-01555 appelée aussi appelée "snapshot too old" est un grand classique Oracle, elle signifie depuis la 9i de Oracle que le tablespace undo est trop petit. Si l'erreur est récurrente, il faut donc envisager une augmentation du tablespace undo.

L'erreur peut venir d'un update, merge ou delete trop volumineux, mais aussi d'un select important effectué en même temps qu'une grosse transaction.

La requete suivante permet d'estimer en tenant compte de l'activité transactionnelle des 7 derniers jours la taille optimale du tablespace undo.

select d.undo_size/(1024*1024) "Taille Actuelle [Mo]", 
substr( e.value,1,25) "Undo Rétention [Sec]",
(to_number(e.value) * to_number(f.value) * g.undo_block_per_sec) / (1024*1024) "Taille Optimale [Mo]"
from ( select sum(a.bytes) undo_size from v$datafile a, v$tablespace b, dba_tablespaces c where c.contents = 'UNDO' and c.status = 'ONLINE' and b.name = c.tablespace_name and a.ts# = b.ts# ) d, 
v$parameter e, 
v$parameter f, 
( select max(undoblks/((end_time-begin_time)*3600*24*7)) undo_block_per_sec from v$undostat ) g 
where e.name = 'undo_retention' and f.name = 'db_block_size' ;

Adapter la formule 3600 * 24 * 7 en fonction de la période d'analyse. La durée est exprimée en nombre de secondes.