Вопрос: ORA-12705: невозможно получить доступ к файлам данных NLS или недействительной среде


Я получаю эту ошибку при попытке создать пул соединений в моей базе данных 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

Я могу подключиться к базе данных через клиент sqlplus & iSQLPlus, но когда я пытаюсь подключиться с помощью этой программы Java, я получаю эту ошибку, только когда пул подключений должен быть инициализирован, и он не инициализирует пул соединений.

Может кто-то, пожалуйста, помогите мне разрешить это?


Версия DB:  Oracle version 10.2.0.1

ОПЕРАЦИОННЫЕ СИСТЕМЫ:  RHEL 4.0


Вот код barebone, java, который вызывает эту ошибку при подключении к моей базе данных.

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){}
            }
    }

}

6
2017-09-08 05:16


Источник




Ответы:


Я понял, что вы можете передать эти два параметра вашему Java-приложению, чтобы решить проблему:

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

Вы также можете настроить значения на уровне переменной среды (зависит от вашей ОС).


8
2018-04-08 12:53



Это работает без изменения источников Java. Благодаря! - Michał Niklas
Я получал ту же ошибку в SQLDeveloper. Добавление AddVMOption -Duser.language=en AddVMOption -Duser.region=us в sqldeveloper\sqldeveloper\bin\sqldeveloper.conf помогает. (Проводя это как комментарий, потому что не может ответить на этот защищенный вопрос.) - Vadzim


import 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);

2
2018-01-18 20:55





Что

NLS_LANG

установлен на машине, на которой вы пытаетесь выполнить java-программу? Если вы еще этого не сделали, вы должны сначала отключить NLS_LANG и попробовать это. Если это не сработает, установите его в набор символов вашей конкретной базы данных и проверьте, устраняет ли это проблему.


1
2017-09-11 15:07





Документ № 158654.1 в Metalink объясняет, как разрешить подобные ошибки.

Это может быть простая ошибка в вашей среде (посмотрите на переменные среды $ NLS_ *) или разрешения прав (у вас есть права на $ ORACLE_HOME / ocommon / nls / admin / data?)


0
2017-09-10 13:08



Попытка подключения только с пользователем oracle, с разрешениями. - M.N
Maybee сценарий или инструмент, который вы использовали, устанавливают переменную NLS_ * в неправильное значение. Что говорит «env | grep NLS»? Право могло быть изменено путем неправильной манипуляции. Что говорит «ls -l $ ORACLE_HOME / ocommon / nls / admin / data»? - Benoit
где искать каталог $ ORACLE_HOME / ocommon / nls / admin / data. в клиентской системе, если приложение является j2ee based или на сервере базы данных. - Viky