La Web del Programador: Comunidad de Programadores
 
    Pregunta:  32868 - DESCONEXIÓN A BASE DE DATOS ORACLE POR ADO
Autor:  Roland Grapow
Tengo una aplicación el la cual realiza conexiones mediante ADO a Oracle 8.06, realizo la desconexión con el metodo "close" y después libero el objeto de la memoria. Mi problema es que realmente no se desconecta de la base de datos, es decir, que para Oracle aún mantiene la conexión, habrá otra forma de desconexión a la base de datos que realmente realice la desconexión.

Este es el código que utilizo para la desconexión

conn.Close
Set conn = Nothing

Gracias...

  Respuesta:  Iván Franco
Hola,

La forma de cerrar tu base de datos es correcta, pero te conectas por ¿ODBC? o proporcionas todos los datos en tu ConnectionString?, si no es por ODBC y utilizas directamente las librerías del Proveedor de Oracle, puede ser por 2 razones:

1. Oracle maneja un parámetro que se denomina “auto-commit” o bien si es más reciente tu versión de oracle como la “8” es “commit-on-success” el cual en 0 es apagado y 1 es encendido, este parámetro de configuración indica si al lanzar un query éste se ejecutará al momento de ser llamado o no, si está en cero las conexiones se mantienen abiertas hasta que se dispara el “Commit”, por lo tanto sería bueno que este parámetro estuviera encendido y reducir así el tiempo de ejecución física de los comandos para reducir el tiempo de conexión y optimizar el numero de usuarios concurrentes en tu BD.
2. De igual forma Oracle maneja un tiempo por conexión, este parámetro se llama “Connection time out”, ahora si tu código lo usas abriendo la conexión para cada llamada y la cierras cada vez, te convendría reducir el tiempo permitido para forzar el término de tu conexión, claro que el time out es por tiempo sin uso de la conexión.

Si estás usando un DSN de ODBC para tu conexión, entonces te recomiendo que uses un connection string más completo para abrir tu conexión y gobiernes por código todos esos parámetros.

Espero te sirva de algo esto.

Saludos!