Perdiendo la conexión al servidor Oracle

De un tiempo a esta parte he tenido problemas de conexión a Oracle y cualquier tipo de servidores: era capaz de conectar con el servicio pero inexplicablemente, e incluso en mitad de una instrucción, perdía la conexión. En la ultima semana se había vuelto insoportable ya que debía reconectarme cada pocos minutos.

Estuve chequeando una serie de posibles causas y soluciones y todo hacia indicar que era un problema de mi tarjeta de red. Hice pruebas con varias pcmcia y todo parecía seguir igual.

Sin descartar del todo el problema de hard intente limpiar el ordenador buscando algún spyware que lei provocaban el mismo efecto. El resultado: nada de nada.

De casualidad y sobre el tema de los spyware leí sobre el reset del winsock y encontré esta herramienta, XP TCP/IP Repair. ¡¡¡Cuidado con lanzar a ciegas!!!

Según parece, si se juega como es mi caso con la configuración de red o debido a algunos tipos de software de no se sabe que propósito tienen, se puede corromper la configuración Winsock y/o Layered Service Providers (LSP) del sistema Operativo, degradando o bloqueando la conexión de red. Esta aplicación en cuestión no deja de ser una interfaz a un par de instrucciones, requiere reiniciar la máquina para ver los cambios aplicados.

En mi caso funcionó. Debo advertir que debe de ser una práctica con cierto riesgo ya que elimina posibles configuraciones correctas que en teoría dejarán de funcionar pero es esto o nada.

Actualización: Después de varios días funcionando sin problemas, volvieron a dar varios timeout en una conexión a Oracle. Esta vez el problema estaba limitado a este tipo de cliente con lo que realicé una traza de SQL*NET y descubrí problemas de timeout. Según Metalink  estos problemas pueden ser debidos a algún tipo de congestión de red y pueden solucionarse ampliado el valor de un parametro del registro TcpMaxDataRetransmissions. Lo subí hasta 10, el doble del valor por defecto. A ver cuanto dura.

Poner Oracle9i en modo archivelog

Los pasos son muy básicos, en primer lugar abrir una sesión con el usuario SYS y modificar estos parámetros del xfile.

ALTER SYSTEM SET log_archive_start=TRUE SCOPE=spfile;

ALTER SYSTEM SET log_archive_dest_1='location=/u01/oradata/<MiSID>/archive/' SCOPE=spfile;

ALTER SYSTEM SET log_archive_format='arch_%t_%s.arc' SCOPE=spfile;

Su función es activar el proceso de archivado y establecer el destino y formato de los ficheros. Con los parámetros modificados debemos reiniciar la base de datos. Antes de la apertura es necesario reactivar el proceso de archivado.

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ARCHIVE LOG START;

ALTER DATABASE ARCHIVELOG;

ALTER DATABASE OPEN;

La base de datos ya está activada, en este ultimo paso comprobamos el estado del archiver.

ARCHIVE LOG LIST;