ORA-01000: Maximum open cursors exceeded (nombre maximal de curseurs ouverts dépassé)
OracleQue 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.
Autres entrées pour ce moteur
- ORA-00942Table or view does not exist (la table ou la vue n'existe pas)
- ORA-01031Insufficient privileges (privilèges insuffisants)
- ORA-00257Archiver error. Connect internal only, until freed (erreur de l'archiveur ; connexion interne uniquement)
- ORA-00018Maximum number of sessions exceeded (nombre maximal de sessions dépassé)
- ORA-28000The account is locked (le compte est verrouillé)
- ORA-01578Oracle data block corrupted (file #, block #) (bloc de données Oracle corrompu)
- ORA-01722Invalid number (nombre invalide)