ORA-01555: snapshot too old: rollback segment number…

ORA-01555 ORA-01555

ORA01555 snapshot too old oder warum das einfache verändern der undo_retention nicht ausreicht.

Auswirkung: Eine oder mehrere Oracle-Datenbankanfragen wurden abgebrochen, da die Rollback Informationen einer Abfrage für konsistente Lesevorgänge von einer anderen Session bereits überschrieben wurden.

Ein Oracle ORA-01555 bedeutet umgangssprachlich, dass es eine Veränderung an Daten gegeben hat, die mit einer anderen Datenbankverbindung(Session) konsistent gelesen wurde. Wenn die gestartete Transaktion jetzt „sehr“ lange offen ist und viele Veränderungen anstehen und gleichzeitig in der anderen Datenbankverbindung (Session) Daten gelesen werden, dann kann ein ORA-01555 passieren.

Oracle beschreibt dies wie folgend:ORA-01555: snapshot too old: rollback segment number string with name „string“ too small

Cause: rollback records needed by a reader for consistent read are overwritten by other writers

Action: If in Automatic Undo Management mode, increase undo_retention setting. Otherwise, use larger rollback segments

Der erste Versuch zur Behebung der Fehlermeldung kann das Vergrößern der UNDO_RETENTION sein. Die Ursache des ORA-01555: snapshot too old ist damit noch nicht behoben! Dadurch sollte lediglich der Oracle ORA-01555 nicht mehr so oft auftreten.

Wir müssen raus finden, ob das UNDO_MANAGEMENT auf AUTO steht:

SQL>select name,value from v$parameter where name like '%undo%';

steht der Wert für UNDO_MANAGEMENT auf AUTO, dann können wir die undo_retention nach oben setzen. Vorsicht: Dadurch vergrössern Sie das Undo-Tablespace. Schauen Sie zuerst ob Sie genügend Platz auf den Platten haben.

SQL> alter system set undo_retention=3600 scope=both;

Bei RAC(Real Application Cluster) Installationen wird dies wie folgend gelöst:

SQL>alter system set undo_retention=3600 sid=’RAC1′;
SQL>alter system set undo_retention=3600 sid=’RAC2′;

alternativ:

SQL>alter system set undo_retention=3600 scope=both sid=’*′;

Wieso kommt denn ein ORA-01555: Snapshot too old?

Die wirkliche Ursache für die Oracle Fehlermeldung ist wie bereits beschrieben damit noch nicht behoben. Die Ursache liegt in sehr lang laufenden Select Statements und gleichzeitigen Änderung von Daten in einer parallelen Session. Diese beiden Sitzungen müssen genau betrachtet werden. Dies trifft besonders oft bei stark belasteten OLTP-Systemen auf. Auch ein Export(Datapump) mit der Option consistent kann Verursacher des Problems sein.

Sie können uns gerne kurzfristig um Unterstüzung für einen Oracle ORA-01555 Fehler bitten.Oracle Support

Wenn Sie Hilfe bei der Ursachenfindung oder Behebung eines „ORA-01555 Snapshot too old„-Problems haben, dann Kontaktieren Sie uns gerne.