ORA-01000: Maximum open cursors exceeded (maximale Anzahl offener Cursor überschritten)
OracleWas 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.
Weitere Einträge zu dieser Datenbank
- ORA-00942Table or view does not exist (Tabelle oder View existiert nicht)
- ORA-01031Insufficient privileges (unzureichende Berechtigungen)
- ORA-00257Archiver error. Connect internal only, until freed (Archiver-Fehler; bis zur Freigabe nur interne Verbindungen)
- ORA-00018Maximum number of sessions exceeded (maximale Anzahl von Sessions überschritten)
- ORA-28000The account is locked (das Konto ist gesperrt)
- ORA-01578Oracle data block corrupted (file #, block #) (Oracle-Datenblock beschädigt)
- ORA-01722Invalid number (ungültige Zahl)