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.:
Publicar un comentario