Quick Links



Keywords

FAQByGoogleKeys ORA-01652

Siehe auch Warum Sie das ORA-01652 Problem lösen sollten .

Oder FAQByGoogleKeys ORA-01652 .
Oder Monitoring ORA-01652 .

Hier finden Sie ein ORA-01652 Praxisbeispiel .

Die oraservices.de Oracle Support Services bieten Unterstützung zur Analyse und Lösung des Problems.

Beispiele der Unterstützung durch oraservices.de finden Sie auf den oraservices.de Projektseiten .

Das oraservices.de Monitoring Package für Oracle Datenbanken enthält auch ein Modul zur proaktiven Analyse des ORA-01652 Fehlers.

Mittlerweile macht diese Suchanfrage einen Großteil der Suchanfragen aus, die auf diese Site führen. Offenbar ein Indiz für ein häufig ungelöstes Oracle Problem.

Fehleranalyse

Problematisch ist unter anderem der missverständliche Text der Fehlermeldung

01652, 00000, unable to extend temp segment by %s in tablespace %s
*Cause: Failed to allocate an extent for temp segment in tablespace.
*Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more files to the tablespace indicated.

Spätestens wenn der Temp Tablespace schon eine immense Größe hat, fragt sich der Administrator, ob die im Fehlertext beschriebene Vergrößerung wirklich Sinn macht. Denn die Ursachen für den Fehler sind häufig andere: z.B. fehlerhafte oder falsch eingeschätzte SQL Statements.
Mit Hilfe einer geeigneten Analyse lässt sich das SQL Statement ermitteln, das zumindestens mit verantwortlich für das Erscheinen der Fehlermeldung ist. Nicht selten zeigt eine nachfolgende Auswertung, dass zur Ausführung des betreffenden SQL Statements ein Sortierbereich nötig wäre, der die Temp Tablespace Größe bei weiterm übersteigt.
Moderne Software erstellt SQL Statements generisch, speziell Reporting Software lässt häufig das Erstellen von Queries mit Hilfe grafischer Oberflächen zu. Je nach Qualität der Software und der Kenntnisse des Users sind die so entstandenen SQL Statements möglicherweise in einigen Fällen nicht korrekt oder die Ergebnisquery entspricht nicht der beabsichtigten Anfrage.
Einer der Hauptverursacher von ORA-01652 Fehlern bei hinreichend großen Temp Tablespaces sind SQL Statements mit fehlenden Join Kriterien. Das Problem lässt sich an diesem (sehr trivialen) Beispiel erkennen

select a1, a2 from t1, t2;

Durch die fehlende Where-Klausel wird das Ergebnis ein Cartesian Join (Kreuzprodukt), soll heissen, jede Zeile von t1 wird mit jeder Zeile von t2 verknüpft. Sind t1 und t2 entsprechend groß, wächst die Zielmenge schon mal auf einige Terabytes an.

Beispiel: t1 und t2 haben jeweils 1.000.000 Rows, dann ist die Ergebnismenge 10^12 Zeilen groß. Bei durchschnittlich 100 Bytes pro Zeile „wiegt“ die Ergebnismenge 100 Terabytes. Entsprechend groß muss auch der Temp Tablespace sein, mit Hilfe dessen das Result Set zusammengestellt wird.

Ein Cartesian Join kann natürlich auch beabsichtigt sein. Ob Fehler oder Absicht: In jedem Fall sollte die Zielgröße des Result Sets beobachtet werden.
Bei komplexeren SQL Statements ist das Problem nicht unbedingt auf den ersten Blick ersichtlich. Hier hilft nur eine strukturierte Analyse.

Bei mehrfachem Auftreten von ORA-1652 Fehlermeldungen ist es geboten, den Füllstand des Temp Tablespace zu beobachten. Nach Überschreiten eines vorgegebenen Schwellwertes lässt sich der „Verursacher“ und das zugrundeliegende SQL Statement ermitteln. Liegt ein fehlerhaftes SQL Statement vor, kann die betreffende Session möglicherweise (automatisiert oder manuell) beendet werden. Eine nachfolgende Analyse ermöglicht die Korrektur des Fehlers an dem Punkt (Software, User), an dem er entstanden ist.
Auch die Dimensionierung des Temp Tablespaces lässt sich mit Hilfe der Daten aus dem Oracle Data Dictionary sinnvoll vornehmen.

Erfinden Sie das Rad nicht neu! Der beschriebene Prozess (Monitoring, Notification, Analyse) ist Teil des oraservices.de Monitoring Packages.

Siehe auch: Praxisbeispiel ORA-1652 .

oder Monitoring ORA-01652 .