DBAtlas · Atlas d'exploitation des bases de données

ORA-01000: Maximum open cursors exceeded (nombre maximal de curseurs ouverts dépassé)

Oracle

Que signifie cette erreur ?

Une session a ouvert plus de curseurs que n'en autorise le paramètre OPEN_CURSORS. Aucun nouveau curseur ne peut être ouvert.

Cause

L'application ne ferme pas les objets Statement/ResultSet qu'elle ouvre (fuite de curseurs), OPEN_CURSORS est trop bas pour la charge, ou de nouvelles instructions préparées sont sans cesse préparées dans une boucle et jamais fermées.

Comment la corriger

Surveillez les curseurs ouverts : SELECT * FROM v$open_cursor WHERE sid = ... et consultez le nombre par session via v$sesstat. La vraie correction consiste à fermer chaque Statement/ResultSet dans un bloc finally de l'application (élimination de la fuite de curseurs). En contournement, augmentez OPEN_CURSORS : ALTER SYSTEM SET OPEN_CURSORS = 1000. Revoyez la taille du cache d'instructions JDBC.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur