Und täglich grüßt das Murmeltier – ORA-1555

Wohl einer der bekanntesten Fehler überhaupt, der gute alte ORA-01555 und noch genauso aktuell wie früher. Der Fehlertext ist mittlerweile irreführend, da eigentlich nicht mehr Rollback Segmente, sondern nur noch Undo Segmente verwendet werden. Nichtsdestotrotz bleibt die Ursache des Problems das gleiche, einer Session war es nicht möglich einen konsistenten Datenzustand zum Zeitpunkt X abzufragen. Der Grund hierfür sind Änderungen an den Daten, welche es verhindern dass eine Abfrage ein konsistentes Ergebnis liefern kann.

Wie kommt es zu dem Fehler
Hier bietet sich am besten ein Entscheidungsbaum an, welcher die dahinter stehende Logik erklärt.

  • wenn „Undo Tablespace hat eine feste Größe (Kein Autoextend)“ dann
    • wenn „Kann ein neues Undo Extent angelegt werden“ dann
      • „Erstelle ein neues Undo Extent. Ende“
    • ansonsten
      • wenn „Gibt es ‚Expired‘ Undo Extents, welche überschrieben werden können“ dann
        • „Überschreibe ‚Expired‘ Undo Extents. Ende“
      • ansonsten
        • wenn „Gibt es ‚Unexpired‘ Undo Extents, welche überschrieben werden können“ dann
          • „Überschreibe ‚Unexpired‘ Undo Extents. Ende“
        • ansonsten
          • „ORA-01555 Fehler“
  • ansonsten –Undo Tablespace steht auf Autoextend, Anm.d. Red.
    • wenn „Kann ein neues Undo Extent angelegt werden“ dann
      • „Erstelle ein neues Undo Extent. Ende“
    • ansonsten
      • wenn „Hat der Undo Tablespace bereits seine maximale Größe erreicht?“ dann
        • wenn „Gibt es ‚Expired‘ Undo Extents, welche überschrieben werden können“ dann
          • „Überschreibe ‚Expired‘ Undo Extents. Ende“
        • ansonsten
          • wenn „Gibt es ‚Unexpired‘ Undo Extents, welche überschrieben werden können“ dann
            • „Überschreibe ‚Unexpired‘ Undo Extents. Ende“
          • ansonsten
            • „ORA-01555 Fehler“
      • ansonten
        • „Erweitere das Datenfile und erstelle ein neues Undo Extent. Ende“

Aus dem Entscheidungsbaum ergibt sich eigentlich auch schon die Lösung für das Problem, entweder den Undo Tablespace automatisch erweitern lassen oder die Vorhaltezeit von Undo Extents mit Hilfe des Parameters UNDO_RETENTION verändern. Sollte dies Ihr Problem noch nicht beheben, gäbe es noch unzählige weitere Stellschrauben z. B. GUARANTEE Undo und auch Ausnahmefälle wie z. B. die Verwendung von LOBs, dafür bräuchte es dann jedoch eine individuelle Analyse.

Rufen Sie uns an 069-588043610, wir helfen Ihnen gerne !!!