ORA-00604 junto a ORA-12705

Descipción

Al intentar conectar a una base de datos Oracle encontramos el siguiente mensaje de error:

ORA-00604: se ha producido un error a nivel 1 de SQL recursivo
ORA-12705: No se puede acceder a los archivos de datos NLS o se 
ha especificado un entorno no válido.

Esto lo encontramos en particular al intentar conectarnos a una instancia de Oracle 8 usando un cliente 10g.

 

Causa

Una buena parte de los problemas que se encuentran en esta situación se deben a las diferencias entre las versiones del cliente y del servidor. Ahora bien este error en particular se debe además a la diferencia en los idiomas, o set de caractéres, usados por ambos al intentar la conexión.

En particular esto se encuentra en los sistemas configurados en español, esto con la variable NLS_LANG.

Solución

La forma más simple y rápida de solucionar este problema es borrar el contenido de la variable NLS_LANG en el cliente:

  • En el caso de clientes corriendo sobre Windows la modificación se hace directamente en el registro. La entrada es
\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_nombre_home_cliente\NLS_LANG

Basta con renombrar esta entrada y sin reiniciar el equipo, sólo la aplicación que está accediendo al cliente, se solucionará el problema.

  • En el caso de instalaciones Unix basta con hacer
unset NLS_LANG