8 votos

ORA-12705: No se puede acceder a los archivos de datos NLS o se ha especificado un entorno no válido

Estoy recibiendo este error al intentar crear un pool de conexiones, en mi base de datos Oracle, Oracle 10gR2.

java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified

Soy capaz de conectarme a la base de datos a través de sqlplus y el cliente iSQLPlus, pero cuando intento conectarme usando este programa Java, obtengo este error justo cuando el pool de conexiones debe ser inicializado y no inicializa el pool de conexiones.

¿Puede alguien ayudarme a resolverlo?


Versión DB: Oracle version 10.2.0.1

OS: RHEL 4.0


Aquí hay un código java básico que está lanzando este error, mientras se conecta a mi base de datos.

import java.sql.*;

public class connect{
    public static void main(String[] args) {
        Connection con = null;
        CallableStatement cstmt = null;

        String url = "jdbc:oracle:thin:@hostname:1521:oracle";
        String userName = "username";
        String password = "password";

        try
        {
            System.out.println("Registering Driver ...");
            DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());

            System.out.println("Creating Connection ...");
            con = DriverManager.getConnection(url, userName, password);

            System.out.println("Success!");

        } catch(Exception ex) {
            ex.printStackTrace(System.err);
          } finally {
            if(cstmt != null) try{cstmt.close();}catch(Exception _ex){}
            if(con != null) try{con.close();}catch(Exception _ex){}
            }
    }

}

12voto

FoxyBOA Puntos 222

Me he dado cuenta de que puedes pasar esos dos parámetros a tu aplicación Java para resolver el problema:

-Duser.country=en -Duser.language=en

También puedes configurar los valores a nivel de variable de entorno (depende de tu sistema operativo).

3voto

importar java.util.*;

Locale.setDefault(Locale.ENGLISH); // use this for change NLS
   String URL = "jdbc:oracle:thin:@//"+khost+":"+kport+"/"+kbasename;

DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
   Connection con = DriverManager.getConnection(URL,kuser,kpassword);

1voto

halorty Puntos 31

¿Qué es?

NLS_LANG

en la máquina desde la que se intenta ejecutar el programa java? Si aún no lo ha hecho, primero debería desajustar NLS_LANG y probarlo. Si eso no funciona, configúrelo con el conjunto de caracteres de su base de datos específica y vea si eso soluciona el problema.

0voto

Benoit Puntos 1961

El documento #158654.1 de Metalink explica cómo resolver este tipo de errores.

Podría ser un simple error en su entorno (eche un vistazo a las variables de entorno $NLS_*) o un permiso de derechos (¿tiene derechos sobre $ORACLE_HOME/ocommon/nls/admin/data?)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: