un ejemplo muy sencillo la conexion a la base de datos desde visual basic abre en promedio 2 a 4 cursores segun he podido probar.
El problema se presenta cuando usamos muchos recorset sin cerrarlos , podemos hacer una simetría de un rs = un cursor de oracle.
Cuando actualizamos los datos no se abre ningún cursor ya que son consultas que no devuelven registros.
Podemos ver los cursores abiertos con la vista v$open_cursor
select count(*) , user_name
from v$open_cursor
group by user_name
notar que hay cursores que abre oracle para actualizar las estadísticas de la tabla y mas , osea por mas que nosotros abramos 3 cursores desde vb en la vista pueden aparecer 6 o 7 que son propios de oracle.
Muchas veces podemos ver que nos aparece la siguiente advertencia
Current Open Cursors Count
son las cantidad de cursores que tenemos abiertos , esto depende del tamaño de nuestra sga , normalmente podemos usar para calcular el tamaño de la shared_pool viendo la cantidad de cursores abiertos cuando la base esta a full , pero no dejar también de ver la aplicación porque una aplicación mal desarrollada lleva a los dba a a hacer sucesivos ajustes a la bd que por ahí tocando solo la aplicación los problemas se resuelven.
fuente : http://support.microsoft.com/kb/183639/es
No hay comentarios:
Publicar un comentario