jueves, marzo 29, 2012

ORA-01000: número máximo de cursores abiertos excedido

Este error se debe a que la sesión alcanzó el límite máximo permitido de cursores abiertos.

para solucionar este problema existen una serie de recomendaciones que van desde la manipulación de los parametros de la base de datos Oracle para que soporte mas cursores o la mejora de la aplicacion donde se originó el error.


Puedes obtener el número de cursores permitidos con la siguiente consulta:

SELECT VALUE FROM V$PARAMETER WHERE NAME='open_cursors';

para modificar este valor lo puedes hacer con la siguiente instrucción:


ALTER SYSTEM SET OPEN_CURSORS = 1000;

donde el numero 1000 será el máximo de cursores permitidos.

Hay que tener en cuenta que a pesar de elevar el número máximo de cursores permitidos esto va a depender del Sistema Operativo y del hardware.

Si este error te sucedió al ejecutar un procedimientos o script desde un programa enVisual Studio .NET, entonces hay una serie de mejores que debes tener en cuenta: 

la primera de ellas es hacer Dispose a los objetos que usas al momento ejecutar  la sentencia Oracle, cerrar el componente OracleDataReader.

A continuación dejo una tabla que indica a que objetos se puede hacer dispose y close.


Clase
Método close
Método Dispose
OracleConnection
si
si
OracleDataReader
si
si
OracleBFile
si
si
OracleBlob
si
si
OracleClob
si
si
OracleXmlStream
si
si
OracleCommand

si
OracleDataAdapter

si
OracleRefCursor

si
OracleParameter

si
OracleCommandBuilder

si
OracleTransaction

si
OracleXmlType

si
OracleGlobalization

si

No hay comentarios.: