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