ORA-00604 ORA-12705 - PullRequest
       38

ORA-00604 ORA-12705

9 голосов
/ 27 октября 2009

У меня ошибка в моем веб-приложении j2ee.

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

 oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:283)
 oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:278)
 oracle.jdbc.driver.T4CTTIoauthenticate.receiveOauth(T4CTTIoauthenticate.java:785)
 oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:376)
 oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
 oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
 oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
 oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:839)
 java.sql.DriverManager.getConnection(Unknown Source)
 java.sql.DriverManager.getConnection(Unknown Source)
 org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
 org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
 org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
 org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
 org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
 org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)


 org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
 org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1353)

Этот проект работает на компьютерах моих коллег ... Я имею в виду, что этот проект работает для них, но когда я запросил папку их проекта и импортировал ее в свое затмение, при запуске я столкнулся с этой ошибкой. Файлы jar уже упакованы с папкой проекта.

Я также создал простой проект j2ee, используя hibernate, но у меня была та же ошибка. Я попытался пропинговать сервер БД и просмотреть его с помощью разработчика PL / SQL, и у меня нет проблем с ним

Ответы [ 8 ]

5 голосов
/ 08 апреля 2010

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

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

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

5 голосов
/ 27 октября 2009

Попробуйте следующее:

  1. Проверьте правильность настройки NLS_LANG. На окнах это в реестре под \HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE.
  2. Убедитесь, что клиентское программное обеспечение Oracle установлено правильно.
  3. Проверьте, есть ли на этом компьютере несколько домов Oracle. В этом случае найдите активную и проверьте, работает ли она.
  4. Проверить с помощью SQL * Plus, если он установлен. Sql Developer работает, потому что у него есть собственная клиентская установка.

Edit:
Что касается драйверов, проверьте этот сайт: Oracle Instant Client . Там вы найдете документацию по минимальной установке драйверов, необходимой для доступа JDBC к Oracle. Я не знаю много об этом, потому что я использую .Net.

Редактировать 2:
См. Этот вопрос: Настройка NLS_LANG для тонкого драйвера JDBC . Существует та же ошибка, что и у вас, и проблема заключалась в том, что локаль по умолчанию для NLS LANG не была определена. Цитата:

Настройки NLS_LANG являются производными от java.util.Locale. Поэтому перед подключением вам нужно будет сделать такой же вызов:

  Locale.setDefault(Locale.<your locale here>);
4 голосов
/ 28 ноября 2012

Для Windows env вам нужно изменить системный языковой стандарт и System Format на English/US.

Как изменить локаль системы?

3 голосов
/ 12 декабря 2011

У меня была такая же проблема. Решением было добавить страну и язык к sqldeveloper.conf

Пожалуйста, откройте файл:

\sqldeveloper\sqldeveloper\bin\sqldeveloper.conf

И добавить следующее:

AddVMOption -Duser.language=en
AddVMOption -Duser.region=us

Вышесказанное помогает.

Ссылка: http://forum.oradba.net/showthread.php?t=423&langid=1

1 голос
/ 03 августа 2010

Я нашел решение, я просто изменил регион и язык в моей ОС (Windows 7), убедитесь, что он совпадает с языком и языком оракула. ​​

0 голосов
/ 27 февраля 2019

проверьте системную переменную JAVA_HOME и убедитесь, что это та же версия, которую вы используете в своих проектах и ​​программах

0 голосов
/ 27 марта 2018

Первый запрос на выполнение:

select userenv('LANGUAGE') from dual;`

Это даст оракулу региональный и языковой. Измени регион и язык в ОС, оба должны совпадать.

0 голосов
/ 27 февраля 2016

Драйвер Oracle JDBC неявно выполняет следующую инструкцию после открытия нового соединения:

ALTER SESSION SET NLS_LANGUAGE='language' NLS_TERRITORY='territory'

В нашем случае у нас были проблемы с Oracle XE 11g и отображениями языка / территории по умолчанию, встроенными в драйвер JDBC: локаль 'ru' была сопоставлена ​​с территорией 'CIS', которая поддерживается только Oracle EE, но Oracle XE имел 'RUSSIA' только территория. Вот как мы это исправили:

-Doracle.jdbc.territoryMap="ru=RUSSIA;RU=RUSSIA"

Существует опция для NLS_LANGUAGE (у нас не было проблем с настройками по умолчанию):

-Doracle.jdbc.languageMap="ru=RUSSIAN;RU=RUSSIAN"

Исправлено: константа ru = РУССКИЙ взято из класса oracle.sql.converter.CharacterSetMetaData драйвера java jdbc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...