DBAtlas · Atlas für Datenbankbetrieb

ORA-01000: Maximum open cursors exceeded (maximale Anzahl offener Cursor überschritten)

Oracle

Was bedeutet das?

Eine Session hat mehr Cursor geöffnet, als der Parameter OPEN_CURSORS zulässt. Es kann kein neuer Cursor geöffnet werden.

Ursache

Die Anwendung schließt geöffnete Statement-/ResultSet-Objekte nicht (Cursor-Leak), OPEN_CURSORS ist für die Last zu niedrig gesetzt oder in einer Schleife werden ständig neue Prepared Statements vorbereitet und nie geschlossen.

Lösung

Überwache offene Cursor: SELECT * FROM v$open_cursor WHERE sid = ... und sieh dir die Anzahl pro Session über v$sesstat an. Die eigentliche Lösung ist, jedes Statement/ResultSet in der Anwendung in einem finally-Block zu schließen (Beseitigung des Cursor-Leaks). Als Workaround erhöhe OPEN_CURSORS: ALTER SYSTEM SET OPEN_CURSORS = 1000. Prüfe die Größe des JDBC-Statement-Cache.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank