Oracle Database · · 3 Min.

Oracle Undo Retention mit V$UNDOSTAT beurteilen

Statt UNDO_RETENTION blind hochzusetzen, zeigen Daten aus V$UNDOSTAT, ob lange Abfragen, Undo-Erzeugung oder knapper Speicher die eigentliche Ursache sind.

Die Meldung ORA-01555: snapshot too old führt oft zum Reflex, UNDO_RETENTION deutlich zu erhöhen. Der Parameter ist jedoch kein fester Aufbewahrungsvertrag: Oracle versucht, Undo mindestens so lange verfügbar zu halten, kann diesen Zeitraum bei knappem Speicher aber verkürzen. Entscheidend sind daher die tatsächliche Undo-Erzeugung, die längsten Abfragen und die verfügbare Tablespace-Größe.

Erst Messwerte, dann Parameter

V$UNDOSTAT sammelt Undo-Statistiken in Zeitintervallen. Eine kompakte Auswertung der jüngsten Intervalle zeigt, ob Fehler und Retention zusammenhängen:

SELECT begin_time,
       end_time,
       undoblks,
       maxquerylen,
       tuned_undoretention,
       ssolderrcnt,
       nospaceerrcnt
FROM   v$undostat
ORDER  BY begin_time DESC
FETCH FIRST 12 ROWS ONLY;

SSOLDERRCNT zählt ORA-01555-Fehler im jeweiligen Intervall. NOSPACEERRCNT zeigt Anforderungen, bei denen im Undo-Tablespace kein freier Platz verfügbar war. TUNED_UNDORETENTION gibt den von Oracle ermittelten Retention-Wert an. MAXQUERYLEN hilft, lange Abfragen mit dem verfügbaren Zeitfenster zu vergleichen. Betrachten Sie mehrere Intervalle rund um den Vorfall und die typische Spitzenlast, nicht nur einen einzelnen aktuellen Wert.

Die passende Maßnahme ableiten

Steigt SSOLDERRCNT, während NOSPACEERRCNT null bleibt, vergleichen Sie zuerst die längste Abfrage mit der tatsächlichen Retention. Ein längerer Wert für UNDO_RETENTION kann helfen, sofern der Tablespace dafür groß genug ist. Bei Platzmangel sollte außerdem die Undo-Erzeugung während Spitzenlast betrachtet und der Speicher mit einer realistischen Obergrenze dimensioniert werden.

Eine niedrige Retention ist nicht automatisch ein Problem: Für viele Systeme reicht sie für Read Consistency und normale Abfragen. Längere Aufbewahrung wird besonders relevant, wenn Flashback-Funktionen oder sehr lange Abfragen sie benötigen. Prüfen Sie deshalb den konkreten fachlichen Bedarf, bevor Sie Speicher dauerhaft vergrößern.

RETENTION GUARANTEE mit Bedacht einsetzen

Die Option RETENTION GUARANTEE verhindert, dass Oracle unexpired Undo überschreibt. Damit kann sie lange Abfragen oder Flashback-Anforderungen absichern. Der Preis: Wenn der Platz knapp wird, können neue DML-Transaktionen scheitern, statt dass altes Undo vorzeitig wiederverwendet wird. Aktivieren Sie die Garantie daher nur mit belastbarer Größenplanung, Überwachung und einem klaren Betriebsgrund. Der Tablespace-Status lässt sich über DBA_TABLESPACES.RETENTION kontrollieren.

Fazit

Undo-Tuning beginnt mit dem Muster in V$UNDOSTAT, nicht mit einem pauschal erhöhten Parameter. Verknüpfen Sie ORA-01555- und Platzfehler mit Abfragelängen, Retention und Spitzenverbrauch. So wählen Sie zwischen Anpassung der Abfrage, mehr Undo-Speicher und einer bewusst abgesicherten Retention Guarantee.

Weiterführend: Oracles Dokumentation zu Undo Management, zur Ansicht V$UNDOSTAT und zum Parameter UNDO_RETENTION.