I am having this error in my j2ee web application.
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)
This project works in my colleagues’ PCs… I mean this project works for them but when I asked for their project folder and imported it on my eclipse, when i run it i meet this error. The jar files are already packaged with the project folder.
I also created a simple j2ee project using hibernate but I had the same error.
I tried to ping the DB server and browse it using PL/SQL developer and I don’t have any problem with it
OMG Ponies
324k80 gold badges520 silver badges499 bronze badges
asked Oct 27, 2009 at 7:59
Try following:
- Check that NLS_LANG setting is correct. On windows it is in registry under
HKEY_LOCAL_MACHINESOFTWAREORACLE
. - Check that Oracle client software is correctly installed.
- Check if there are multiple Oracle homes on that computer. In that case, find active one and check if it works.
- Test with SQL*Plus if there is one installed. Sql Developer works because it has its own client installation.
Edit:
Regarding drivers, check this site: Oracle Instant Client. There you will find documentation on minimum drivers installation needed for JDBC access to Oracle. I don’t know much about that because I use .Net.
Edit 2:
See this question: NLS_LANG setting for JDBC thin driver. There is same error as you have and problem was that default locale for NLS LANG was not defined. Quote:
The NLS_LANG settings are derived from the java.util.Locale . Therefore, you will need to make a call similar to this before connecting:
Locale.setDefault(Locale.<your locale here>);
answered Oct 27, 2009 at 11:12
zendarzendar
13.4k14 gold badges59 silver badges75 bronze badges
1
I figured out that that you could pass that two params to your Java app to resolve the issue:
-Duser.country=en -Duser.language=en
You could configure the values at environment variable level as well (depends from your OS).
answered Apr 8, 2010 at 12:56
FoxyBOAFoxyBOA
5,7887 gold badges48 silver badges82 bronze badges
I had the same problem. The solution was to add the country and the language to sqldeveloper.conf
Please open the file:
sqldevelopersqldeveloperbinsqldeveloper.conf
And add the following:
AddVMOption -Duser.language=en
AddVMOption -Duser.region=us
The above does the trick.
Reference: http://forum.oradba.net/showthread.php?t=423&langid=1
eeerahul
1,6294 gold badges27 silver badges38 bronze badges
answered Dec 12, 2011 at 12:13
athoikathoik
3634 silver badges8 bronze badges
3
For Windows env, you need to change the System Locale and System Format
to English/US
.
How to change system locale?
akjoshi
15.3k13 gold badges103 silver badges120 bronze badges
answered Nov 28, 2012 at 6:44
Khai ShenKhai Shen
511 silver badge2 bronze badges
I found solution, I just change the regional and language in my OS (windows 7), make sure it matches with the oracle regional and language.
answered Aug 3, 2010 at 7:43
Oracle JDBC driver implicitly executes following statement after opening new connection:
ALTER SESSION SET NLS_LANGUAGE='language' NLS_TERRITORY='territory'
In our case we had problems with Oracle XE 11g and default language/territory mappings embedded into JDBC driver: ‘ru’ locale was mapped to ‘CIS’ territory which is supported only by Oracle EE, but Oracle XE had ‘RUSSIA’ territory only.
Here is the way we fixed this:
-Doracle.jdbc.territoryMap="ru=RUSSIA;RU=RUSSIA"
There is option for NLS_LANGUAGE(we had no problems with defaults):
-Doracle.jdbc.languageMap="ru=RUSSIAN;RU=RUSSIAN"
Fixed: constant ru=RUSSIAN taken from class oracle.sql.converter.CharacterSetMetaData of java jdbc driver.
answered Feb 27, 2016 at 18:47
EachEach
4483 silver badges7 bronze badges
1
If you are compiling with intelljIDE I advise you add following options in VMoptions found in configurations model
AddVMOption -Duser.region=us.
answered Oct 25, 2019 at 15:47
DennisDennis
3493 silver badges7 bronze badges
First execute query:
select userenv('LANGUAGE') from dual;`
This will give oracle regional and language. Change the regional and language in OS, both should match.
ochs.tobi
3,1647 gold badges30 silver badges51 bronze badges
answered Mar 27, 2018 at 7:06
check the JAVA_HOME system variable and verify that it is the same version you are using in your projects and programs
answered Feb 27, 2019 at 20:19
1
Changing the region settings and language of my machine helped to get away with this.
I changed region to United States and English (United States) as language.
answered Nov 25, 2019 at 7:06
If you are running a spring application just add Locale.setDefault(Locale.ENGLISH); at main class.
public static void main(String[] args) throws Exception
{
Locale.setDefault(Locale.ENGLISH);
SpringApplication.run(ApplicationName.class, args);
}
answered Apr 30, 2021 at 10:24
- Новые
- Лучшие
- Все
Исправляем ошибку ORA-00604: error occured at recursive SQL level 1ORA-12705 в Oracle SQL Developer
Осваиваем Oracle и PL/SQL
ORA-00604: error occured at recursive SQL level 1ORA-12705: Cannot access NLS data files or invalid enviroment specified
Для исправления делаем следующие действия:
Открываем <папку_со_средой>idebinide.conf
Дописываем туда две строчки:
AddVMOption -Duser.language=en
AddVMOption -Duser.region=us
И всё!
Oracle
ошибка подключения
Roman
03 May 2014, 01:21
23028
3
0
0
Оставить первый комментарий:
- Популярное
Работа со строками в Oracle (PL/SQL)
Основные способы обработки строковых значений в Oracle. В этой публикации я приведу основные функции (читать далее…)
667
Работа с XML в Oracle PL/SQL (Часть 1)
В этой публикации я приведу основные способы работы с XML в Oracle, которые сам использую. Здесь буд (читать далее…)
404
Функция Oracle TO_DATE (PL/SQL)
Функция TO_DATE — преобразует строку в переменную времени DATE. Синтаксис: TO_DATE(исходная_строка, (читать далее…)
368
Объединение выборок UNION, INTERSECT, MINUS в Oracle (PL/SQL)
В Oracle присутствует возможность объединять выборки. Для объединения используются операторы: UNION (читать далее…)
350
XML в Oracle PL/SQL (Часть 2 — Выборки в виде XML)
В предыдущей публикации были рассмотрены некоторые приёмы манипуляции с XML в Oracle, теперь рассмот (читать далее…)
329
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.
Already on GitHub?
Sign in
to your account
Closed
majkinetor opened this issue
Mar 17, 2017
· 15 comments
Comments
I am using Windows 10 and latest dbeaver CE.
I get this error when connecting to local XE service:
java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified
This is specific to Dbeaver, sqlplus and SQL Developer can connect without any problems. This connection worked on older versions of EE, I didn’t touch it 6 or so months.
NLS_LANG is checked and it seems OK (otherwise SQL Developer would complain too).
Any ideas ?
No, nothing helps. Like I said, problem is specific to dbeaver, it works in sqlplus / sqldeveloepr.
sqlplus is native application and uses OCI, SQL developer is shipped with a bunch or Oracle drivers, NLS packages, XML drivers, etc (DBeaver can’t do this because of Oracle license restrictions).
I’m still pretty sure that this problem is a result of some misconfiguration and/or driver jars.
What exactly Oracle driver (and other jars) do you use?
Using ojdbc7.jar as a driver, no other jars.
Note that only my local XE db doesn’t work. I can connect to remote enterprise db’s without a problem.
I faced the same problem on brand new Win 10 with ODAC installed as the only one component from Oracle. Yesterday, I changed regional setting on that computer. So remembering that, I changed back date/time/num format from Serbian to English and everything is working fine.
Additional info: Set English format and start DBeaver. All your connections to Oracle will work until you restart DBeaver even if you change format during that session.
for me dbeaver.exe -nl en
solves the issue
Actually, I have this bug only with ojdbc7.jar
.
I have tried dbeaver with ojdbc8.jar
and it works for me without dbeaver.exe -nl en
.
I confirm it works with -nl en
. Thanks @habamax
2019 and i still read this.
For Mac users out there, go to /Applications/DBeaver.app/Contents/MacOS
Start dbeaver with ./dbeaver -nl en
for me
dbeaver.exe -nl en
solves the issue
This also solved the issue for me in 2020 version 7.3.0.
Add following two properties to /Applications/DBeaver.app/Contents/Eclipse/dbeaver.ini
-Duser.language=en
-Duser.country=US
@dmxunlimit thank you. That works for me without changing system settings!
dbeaver.exe -nl en
Thank you, this works and I don’t have to use dbeaver.exe -nl en
everytime
-Duser.language=en
-Duser.country=US
It worked for me. But not sure why I was getting this issue
Problem:
Connection from the SQL Developer fails with the following error:
ORA-00604: error occurred at recursive SQL level 1 ORA-12705: Cannot access NLS data files or invalid environment specified
Solution:
Find sqldeveloper.conf
file:
$ find / -name sqldeveloper.conf 2>>/dev/null ^@/System/Volumes/Data/Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf
Add the following two parmeters in /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/sqldeveloper/bin/sqldeveloper.conf
AddVMOption -Duser.language=en AddVMOption -Duser.country=US
Restart SQL Developer and try connection again.
Антон (LogRus)
Глобальный модератор Внимание! Люблю сахар в кубиках! |
Добрый день! Довольно много времени убил на борьбу с этой ошибкой при подключении к серверу Oracle Express Edition из VS.NET 2005 В сети полезной информации почти не нашел, то что нашел было или не по руски и невнятно или по руски и невнятно База UNICODEная. Решение такое лезем в реестр HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_ODACHome1NLS_LANG устанавливаем в значение RUSSIAN_RUSSIA.AL32UTF8, где: в общем случае NLS_LANG устанавливаем в NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET может еще кому поможет. |
||
Странно всё это…. |
RXL
Технический
|
http://ora-00604.ora-code.com/ Как понимаешь, в доменном имени пишется код ошибки и получаем тематическую страницу. NLS — это первым делом, сразу после установки. В том числе и для клиентов. |
||
… мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |
Антон (LogRus)
Глобальный модератор Внимание! Люблю сахар в кубиках! |
RXL, не разу е ставил оракл и не настраивал клиентов а в описании ошибки не говорилось откуда она взялась, видимо глюк какой-то в реализации ODP.NET |
||
Странно всё это…. |
Sla
Команда клуба
|
LogRus, клиент оркала под винду? Нет ничего проще Offtopic: Мой бывший шеф ставил оракл-клиента каждый раз с пакета инсталляции, и каждый раз забывал его пропатчить на руссификацию. Встретился с бывшим коллегой, он сказал что История с инсталляцией продолжается. В случае возникновения ошибок, лучше всего искать на оракловских сайтах, а только потом в инете |
||
Мы все учились понемногу… Чему-нибудь и как-нибудь. |
Антон (LogRus)
Глобальный модератор Внимание! Люблю сахар в кубиках! |
Клиент виндовый, сервер виндовый на тойже машине. Клиент ко всему прочему еще и .NET |
||
Странно всё это…. |
RXL
Технический
|
ORA-00604: error occurred at recursive SQL level string Вот эта самая следующая ошибка есть? |
||
… мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |
Антон (LogRus)
Глобальный модератор Внимание! Люблю сахар в кубиках! |
она, только в ней |
||
Странно всё это…. |
RXL
Технический
|
LogRus, думаю, нужно рыться на оракловом сервере — возможно под эту траблу есть патч. Другой вопрос, что там все на английском и большая часть информации (metalink) доступна лишь имеющим поддержку. |
||
… мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |
Falsehood
Молодой специалист не может быть |
привет. Решение такое лезем в реестр HKEY_LOCAL_MACHINESOFTWAREORACLEKEY_ODACHome1NLS_LANG устанавливаем в значение RUSSIAN_RUSSIA.AL32UTF8, где: в общем случае NLS_LANG устанавливаем в NLS_LANGUAGE_NLS_TERRITORY.NLS_CHARACTERSET может еще кому поможет. поможет, если объясните, как узнать, какие NLS_LANGUAGE на серваке, NLS_TERRITORY на серваке и NLS_CHARACTERSET на серваке. пожалуйста |
||
|
Антон (LogRus)
Глобальный модератор Внимание! Люблю сахар в кубиках! |
В случае Oracle Express Edition в остальных случаях не знаю |
||
Странно всё это…. |
PooH
Глобальный модератор … и можно без хлеба! |
Falsehood, на каком именно серваке? какой у тебя туда доступ? или ты имеешь ввиду как программо узнать? |
||
Удачного всем кодинга! -=x[PooH]x=- |
Falsehood
Молодой специалист не может быть |
Лёш, спасибо при подключении к БД Oracle 10g Express Edition (из NetBeans 5.5.1, но это, наверное, не очень важно) генерится ошибка: |
||
|
PooH
Глобальный модератор … и можно без хлеба! |
http://ora-12705.ora-code.com/ ORA-12705: Cannot access NLS data files or invalid environment specified что у тебя в переменных окружения? |
||
Удачного всем кодинга! -=x[PooH]x=- |
Falsehood
Молодой специалист не может быть |
ORACLE_HOME = D:oraclexeapporacleproduct10.2.0server |
||
|
PooH
Глобальный модератор … и можно без хлеба! |
вот, что нашел: http://www.ors.kz/?mod=html&id=277 т.е. у нас фактически 2 пути обхода этой ошибки (WORKAROUND) Первый путь подразумевает 5 действий: Второй путь, использовать драйвер 10.1.0.3. Данный драйвер можно найти в установленной СУБД Oracle Database 10g 10.1.0.3 в каталоге {oracle_home}jdbclib Второй путь проще. Методом проб выяснилось, что для исправления ошибки необходимо заменить библиотеки ojdbc14dms.jar и ojdbc14.jar драйвера Oracle JDBC, который поставляется вместе с JDeveloper 10g, на библиотеки драйвера 10.1.0.3. Заменяем библиотеки, которые находятся по пути {jdeveloper_home}jdbclib. Библиотеки можно скачать тут (http://www.ors.kz/mod/stat.php?dir=20142210020052006110652/lib10103.rar&id=34&id_type=170). |
||
Удачного всем кодинга! -=x[PooH]x=- |
Falsehood
Молодой специалист не может быть |
СПАСИБО!!! драйвера помогли |
||
|
Andrusha
Новенький |
Здраствуйте ребята. при подключении к БД Oracle 10g Express Edition (из NetBeans 5.5.1, но это, наверное, не очень важно) генерится ошибка: Сервер Oracle Express Edition 10, локальный, работает на CL8MSWIN1251 кодировке. Насколько я понял ей помогли другие драйвера, то у меня такое не прокатит. Ибо работаю на режимном предприятии, где что-бы закнуть «из вне» безобидную фотографию на рабочий стол, надо пол предприятия оббегать и собрать пачку А4 справок. |
||
|
RXL
Технический
|
Andrusha, если ты прочел последние два поста, то должен понять, что ей помогло обновление клиентских драйверов БД до 10.1.0.3. На текущий момент это жутко старый драйвер. Обратись на работ в службу, заведующую обновлением ПО и затребуй обновление ораклового клиента до 10.2.0.1. Т.е. не надо делать это самостоятельно—запроси соответствующий отдел. Я для NSL_LANG на виндовых клиентах ставлю NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 и настраиваю форматы дат в программе через ALTER SESSION. Работает стабильно. |
||
… мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |
Andrusha
Новенький |
Andrusha, если ты прочел последние два поста, то должен понять, что ей помогло обновление клиентских драйверов БД до 10.1.0.3. На текущий момент это жутко старый драйвер. Обратись на работ в службу, заведующую обновлением ПО и затребуй обновление ораклового клиента до 10.2.0.1. Т.е. не надо делать это самостоятельно—запроси соответствующий отдел. Я для NSL_LANG на виндовых клиентах ставлю NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 и настраиваю форматы дат в программе через ALTER SESSION. Работает стабильно. Спасибо большее за оперативный подробный ответ. |
||
|
Sla
Команда клуба
|
Andrusha, насколько я знаю, клиент идет в составе сервера. Если ORA-сервер куплен, то и клиент есть. Но непонятно, почему стоит неправильный клиент на серваке. |
||
Мы все учились понемногу… Чему-нибудь и как-нибудь. |
Andrusha
Новенький |
Sla, ORA-сервер стоит локальный, бесплатный, жутко порезаный Express Edition 10. |
||
|
RXL
Технический
|
Клиент идет также и отдельно от сервера и доступен на сайте Oracle бесплатно—надо только зарегистрироваться. Старые версии порой убирают из публичного доступа, но можно найти его на торрентах: добрые люди выкладывают образа дистрибутивов как есть. Попробуй сперва с NLS_LANG. Так будет проще, чем драйвера ставить. Обычно этот параметр в винде задается ключем в реестре (HKML/Software/Oracle), но можно прописать его как переменную окружения. Проверил: переменная окружения имеет более высокий приоритет, чем запись в реестре. |
||
… мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |
Andrusha
Новенький |
Andrusha, переменную окружения лучше вписать внутри программы при подключении или в cmd? |
||
|
RXL
Технический
|
Как будет удобно. |
||
… мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |
an0521
Новенький |
Всем Доброго времени суток. Исполнил рекомендации. ошибка не уходит. может ещё что нибудь посоветуете… |
||
|
RXL
Технический
|
Я уже ничего не посоветую, живого Оракла лет уже 6 в глаза не видел. Думаю, стоит начинать с рассказа о своей проблеме. |
||
… мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |
an0521
Новенький |
Как приконнектится к серверу ORACLE из под 1C7.7 сервер moon (s1111). сервер с реальными данными. Подключение ко всем серверам осуществлять пользователем XXXX с паролем xxxx. После подключения необходимо инициализировать окружение вызовом функции: Пробую такую конструкцию — не выходит : Connection = CreateObject(«ADODB.Connection»); Connection.Open(ConnectionString); P.S. естественно имена/адреса изменены |
||
|
RXL
Технический
|
SQL Server — это MS, а не Oracle. |
||
… мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |