Ora-01000: Que paso otra vez!!!

|


Si a mi otra vez!! resulta que una de mis aplicaciones grandes escrita en C# comenzo indistintamente a dar un ORA-01000!! Esto significa que en mi base de datos estaban demasiados cursores abiertos!!! Que paso?? Estaba yo usando las "mejores practicas" por ejemplo siempre cerrar la conexion, o usarla todo dentro de un bloque using, normalmente mi modelo de extraccion implicada usar un DataAdapter para llenar o un DataSet o un DataTable, nunca usaba DataReaders, pero resulta que los DataAdapter si los usan internamente para llenar los datos, y ahi viene la falla: resulta que si no se cierran y se les da Dispose explicitamente a los DataReaders estos dejan abiertos los cursores que usan por debajo para extraer la informacion, esto solo pasa en Oracle, claro esto a gran escala resulta un problema por que con muchos clientes concurrentes se hace pedasos!!!





Bueno y como se lo soluciona?? como les dije hay que cerrar y darles dispose explicitamente a los DataReader que se usan, en el caso de usar un DataAdapter resultaria algo asi:




Si no esta muy grand la imagen, haganle click y la veran mejor....


En la linea 162 y 163 esta la respuesta al problema, claro esta especializada para usar objetos del DataProvider nativo de Oracle, pero eso si es mejor tambien que aumenten un poco el parametro de cursores abiertos en su base de datos...


Actualizacion! La imagen original es muy pequeña, asi es que espero esta este mejor! Hagalen un par de veces click y la veran completa!


4 comments:

Roberto E. said...

La imagen con el código no es legible, click en ella tampoco la aumenta a tamaño legible. Descargar la imagen y luego ampliarla resulta en líneas ilegibles.

Fco Lomas said...

Perdona Roberto, tienes razón, la reemplazare a la imagen para que sea util...

Anonymous said...

hOLA La imagen sigue ilegible, prodias pegar el código?

graicas

Fco Lomas said...

Esta lista la imagen, esta al ultimo, denle un par de click e incluso se puede hacer zoom! Siento los problemas