DBAtlas · Atlas de operaciones de bases de datos

ORA-01000: Maximum open cursors exceeded (se superó el máximo de cursores abiertos)

Oracle

¿Qué significa?

Una sesión abrió más cursores de los permitidos por el parámetro OPEN_CURSORS. No se puede abrir ningún cursor nuevo.

¿Por qué ocurre?

La aplicación no cierra los objetos Statement/ResultSet que abre (fuga de cursores), OPEN_CURSORS es demasiado bajo para la carga de trabajo o se preparan continuamente nuevos prepared statements en un bucle que nunca se cierran.

Cómo solucionarlo

Supervise los cursores abiertos: SELECT * FROM v$open_cursor WHERE sid = ... y vea el recuento por sesión mediante v$sesstat. La solución real es cerrar cada Statement/ResultSet en un bloque finally en la aplicación (eliminando la fuga de cursores). Como solución temporal, aumente OPEN_CURSORS: ALTER SYSTEM SET OPEN_CURSORS = 1000. Revise el tamaño de la caché de statements de JDBC.

Abrir en DBAtlas →

Más entradas de este motor