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.
Más entradas de este motor
- ORA-00942Table or view does not exist (la tabla o vista no existe)
- ORA-01031Insufficient privileges (privilegios insuficientes)
- ORA-00257Archiver error. Connect internal only, until freed (error del archiver)
- ORA-00018Maximum number of sessions exceeded (se superó el número máximo de sesiones)
- ORA-28000The account is locked (la cuenta está bloqueada)
- ORA-01578Oracle data block corrupted (file #, block #) (bloque de datos de Oracle corrupto)
- ORA-01722Invalid number (número no válido)