ORA-01555 - snapshot too old
Symptomes :
Vote procédure PL/SQL part en erreur ORA-01555.
Oracle : Tous
La plupart du temps cette erreur est causé par un curseur dont un objet est updaté lors du fetch.
Pour ceux qui aiment la lecture, voir la note Oracle Note:40689.1 , et la suite de cet article pour quelques pistes a étudier.
Solution 1:
Augmenter le pas de commit, plus votre commit est fréquent plus le problème apparait.
Cette solution ne fait malheureusement que décaler le problème un peu plus loin
![]()
Solution 2:
Uniquement pour les bases utilisant des rollback segments.
Supprimer tout commit, et pointer vers un rollback segment plus gros.
Pour cela placer une commande du type ” SET TRANSACTION USE ROLLBACK SEGMENT BIGRBS;”
De même que la solution n°1, on est limité par la taille du rollback segment cette fois ci
Solution 3:
Faire un petit effort de codage, et utiliser des curseurs FOR UPDATE, associé a la clause WHERE CURRENT OF
Vous pouvez trouver plus d’info sur cette page , et celle ci .
L’inconvénient de celle solution est que les lignes sont verouillées le temps d’éxécuter la procédure ….
Post a comment