ORA-01555 - snapshot too old

Posted on février 22nd, 2007 in DataBase, Oracle, Tips by David

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