Расскажите нам о своей среде, как вы запускаете Java?
ABCade
Я запускаю приложение Java из командной строки. 64-разрядная версия Windows 7, но Oracle DB работает на удаленном сервере Unix.
ndalama
9
попробуйте добавить "-Duser.timezone = <YOUR_GMT>" к вашей команде, не забудьте заменить <YOUR_GMT> на ваше время по Гринвичу, т.е. -Duser.timezone = "+ 05:30"
ABCade
Ответы:
87
Вы также можете попробовать проверить версию драйвера Oracle jdbc и базы данных Oracle. Как раз сегодня у меня возникла эта проблема при использовании ojdbc6.jar (версия 11.2.0.3.0) для подключения к серверу Oracle 9.2.0.4.0. Замена на ojdbc6.jar версии 11.1.0.7.0 решила проблему.
Мне также удалось подключить ojdbc6.jar версии 11.2.0.3.0 без ошибок, добавив oracle.jdbc.timezoneAsRegion=falseв файл oracle / jdbc / defaultConnectionProperties.properties (внутри банки). Нашел это решение здесь
Наконец, можно добавить -Doracle.jdbc.timezoneAsRegion=falseв командную строку или AddVMOption -Doracle.jdbc.timezoneAsRegion=falseв файлы конфигурации, которые используют эту нотацию
Мне также удалось подключить ojdbc6.jar версии 11.2.0.3.0 без ошибок, добавив oracle.jdbc.timezoneAsRegion = false в файл oracle / jdbc / defaultConnectionProperties.properties (внутри банки). Нашел это решение здесь: forum.oracle.com/forums/thread.jspa?threadID=1095807
Matteo Steccolini
33
Наконец, можно добавить -Doracle.jdbc.timezoneAsRegion = false в командную строку или AddVMOption -Doracle.jdbc.timezoneAsRegion = false в файлы конфигурации, которые используют эту нотацию.
Маттео Стекколини
Спасибо stmsat. У меня это сработало. Я изменил свою банку ojdbc на версию 11.1.0.7.0 в каталоге tomcat / lib, и она начала работать :).
mdev
1
Я использую maven для создания и упаковки (войны) моего проекта и развертывания в Cloud Flare, можно ли каким-либо образом установить это свойство из файла application.properties или из maven.
Исмаил
41
В простой установке SQL-Developer под Windows перейдите в каталог
Используя Jetbrains DataGrip и столкнувшись с той же проблемой после добавления этой опции виртуальной машины, проблема была решена
latsha
Спасибо, это действительно очень помогло!
Quinton
27
Я получил ошибку:
Ошибка из db_connection.java - >> java.sql.SQLException: ORA-00604: ошибка произошла на рекурсивном уровне SQL 1 ORA-01882: регион часового пояса не найден
ORA-00604: ошибка на уровне рекурсивного SQL 1ORA-01882: регион часового пояса не найден
Я не знаю, почему ему не понравился часовой пояс по умолчанию «Европа / Мадрид». Установка часового пояса по умолчанию на «GMT» работает.
fgui
22
Обновите файл oracle / jdbc / defaultConnectionProperties.properties в любой версии библиотеки (например, внутри вашей банки), чтобы он содержал следующую строку:
Что происходит, так это то, что клиент JDBC отправляет серверу идентификатор часового пояса. Серверу необходимо знать эту зону. Вы можете проверить с
SELECTDISTINCT tzname FROM V$TIMEZONE_NAMES where tzname like'Etc%';
У меня есть серверы db, которые знают о Etc / UTC и UTC (tzfile версии 18), но другие знают только UTC (tz версии 11).
SELECT FILENAME,VERSION from V$TIMEZONE_FILE;
На стороне клиента JDBC также существует другое поведение. Начиная с версии 11.2, драйвер будет отправлять идентификаторы зон, если они «известны» Oracle, тогда как перед отправкой смещения времени. Проблема с этой «отправкой известных идентификаторов» заключается в том, что клиент не проверяет, какая версия / контент часового пояса присутствует на сервере, но имеет свой собственный список.
Это объясняется в статье поддержки Oracle [ID 1068063.1].
Кажется, это также зависит от клиентской ОС, более вероятно, что Etc / UTC не сработает с Ubuntu, чем с RHEL или Windows. Я предполагаю, что это связано с некоторой нормализацией, но я не понял, что именно.
У меня возникла эта проблема при запуске автоматических тестов с сервера непрерывной интеграции. Я попытался добавить аргумент виртуальной машины " -Duser.timezone=GMT" к параметрам сборки, но это не решило проблему. Однако добавление переменной окружения " TZ=GMT" помогло мне это исправить.
У меня тоже работала переменная окружения "TZ = GMT". У меня возникли проблемы со сценарием оболочки, который настраивал среду для запуска отдельного инструмента, который, в свою очередь, обращался к Oracle.
Дэвид Кинер,
1
Имея ту же проблему, мне тоже пришлось использовать «TZ = Europe / Zurich» при использовании «ant». Это сработало!
Christof Kälin
2
Это должен быть главный ответ. Все остальные ответы не сработали.
Alex
4
ОШИБКА :
ORA-00604: ошибка на рекурсивном уровне SQL 1 ORA-01882: регион часового пояса не найден
Linux, проект гибернации, драйвер ojdbc6 при запросе базы данных oracle 11g.
разрешение
Параметр TZ не был установлен в Linux-машине, что в основном сообщает оракулу о часовом поясе. Итак, после добавления статуса экспорта «экспорт TZ = UTC» на момент запуска приложения моя проблема была решена.
UTC -> изменить в соответствии с вашим часовым поясом.
Если эта проблема в JDeveloper: измените свойства проекта как для модели, так и для проекта просмотра -> запустить / отладить -> профиль по умолчанию -> изменить, добавьте следующий параметр запуска: -Duser.timezone = Asia / Calcutta
Убедитесь, что указанное выше значение часового пояса получено из вашей базы данных следующим образом:
select TZNAME from V$TIMEZONE_NAMES;
Наряду с этим вы захотите проверить настройки часового пояса в вашем jdev.conf, а также в JDeveloper -> Меню приложения -> Свойства проекта по умолчанию -> Выполнить / Отладка -> Профиль по умолчанию -> Параметры запуска.
У меня тоже была такая же проблема, когда я пытался создать соединение в JDeveloper. Наш сервер расположен в другом часовом поясе, поэтому он вызвал следующие ошибки:
ORA-00604: error occurred at recursive SQL level 1
ORA-01882: timezone region not found
Я сослался на многие форумы, которые просили включить часовой пояс в параметры Java (Run / Debug / Profile) свойств проекта и свойства проекта по умолчанию, как -Duser.timezone="+02:00"b, но это не сработало для меня. Наконец, для меня сработало следующее решение.
Добавьте следующую строку в файл конфигурации JDeveloper ( jdev.conf ).
AddVMOption -Duser.timezone=UTC+02:00
Файл находится в "<корень установки oracle> \ Middleware \ jdeveloper \ jdev \ bin \ jdev.conf".
Для меня проверка правильности установки / etc / sysconfig / clock и ссылки / etc / localtime была в основном предварительным условием для решения проблемы ORA-01882.
Дэвид Кинер,
1
У меня была такая же проблема при попытке установить соединение OBIEE с Oracle db. Я изменил часовой пояс Windows с (GMT + 01: 00) Западно-Центральная Африка на (GMT + 01: 00) Брюссель, Копенгаген, Мадрид, Париж. Затем я перезагрузил свой компьютер, и он работал нормально. Похоже, Oracle не смог распознать часовой пояс Западной и Центральной Африки.
Эта проблема возникает из-за того, что код, который пытается подключиться к базе данных, имеет часовой пояс, которого нет в базе данных. Эту проблему также можно решить, установив часовой пояс, как показано ниже, или любой действительный часовой пояс, доступный в oracle db. действительный часовой пояс, который можно найти, выберите * из версии v $;
Столкнувшись с той же проблемой при использовании Eclipse и удаленной базы данных Oracle, изменение часового пояса моей системы в соответствии с часовым поясом сервера базы данных устранило проблему.
После изменения часового пояса системы перезапустите машину .
Ответы:
Вы также можете попробовать проверить версию драйвера Oracle jdbc и базы данных Oracle. Как раз сегодня у меня возникла эта проблема при использовании ojdbc6.jar (версия 11.2.0.3.0) для подключения к серверу Oracle 9.2.0.4.0. Замена на ojdbc6.jar версии 11.1.0.7.0 решила проблему.
Мне также удалось подключить ojdbc6.jar версии 11.2.0.3.0 без ошибок, добавив
oracle.jdbc.timezoneAsRegion=false
в файл oracle / jdbc / defaultConnectionProperties.properties (внутри банки). Нашел это решение здесьНаконец, можно добавить
-Doracle.jdbc.timezoneAsRegion=false
в командную строку или AddVMOption-Doracle.jdbc.timezoneAsRegion=false
в файлы конфигурации, которые используют эту нотациюисточник
В простой установке SQL-Developer под Windows перейдите в каталог
и добавить
в файл
sqldeveloper.conf
.источник
Я получил ошибку:
Ошибка из db_connection.java - >> java.sql.SQLException: ORA-00604: ошибка произошла на рекурсивном уровне SQL 1 ORA-01882: регион часового пояса не найден
ORA-00604: ошибка на уровне рекурсивного SQL 1ORA-01882: регион часового пояса не найден
Предыдущий код:
новый код:
теперь он работает !!
источник
Обновите файл oracle / jdbc / defaultConnectionProperties.properties в любой версии библиотеки (например, внутри вашей банки), чтобы он содержал следующую строку:
источник
Что происходит, так это то, что клиент JDBC отправляет серверу идентификатор часового пояса. Серверу необходимо знать эту зону. Вы можете проверить с
У меня есть серверы db, которые знают о Etc / UTC и UTC (tzfile версии 18), но другие знают только UTC (tz версии 11).
На стороне клиента JDBC также существует другое поведение. Начиная с версии 11.2, драйвер будет отправлять идентификаторы зон, если они «известны» Oracle, тогда как перед отправкой смещения времени. Проблема с этой «отправкой известных идентификаторов» заключается в том, что клиент не проверяет, какая версия / контент часового пояса присутствует на сервере, но имеет свой собственный список.
Это объясняется в статье поддержки Oracle [ID 1068063.1].
Кажется, это также зависит от клиентской ОС, более вероятно, что Etc / UTC не сработает с Ubuntu, чем с RHEL или Windows. Я предполагаю, что это связано с некоторой нормализацией, но я не понял, что именно.
источник
в eclipse go run → запустить конфигурацию
там перейдите на вкладку JRE на правой боковой панели
в разделе аргументов виртуальной машины вставьте это
-Duser.timezone=GMT
затем Применить -> Выполнить
источник
У меня возникла эта проблема при запуске автоматических тестов с сервера непрерывной интеграции. Я попытался добавить аргумент виртуальной машины "
-Duser.timezone=GMT
" к параметрам сборки, но это не решило проблему. Однако добавление переменной окружения "TZ=GMT
" помогло мне это исправить.источник
ОШИБКА :
Решение: настройка CIM в Centos.
Добавьте эти аргументы Java:
источник
В Netbeans,
Щелкните ОК, затем повторно запустите вашу программу.
Примечание. Вы также можете установить другие временные интервалы, кроме UTC и GMT.
источник
Я столкнулся с этой проблемой с Tomcat. Установка следующих параметров
$CATALINA_BASE/bin/setenv.sh
решила проблему:Я уверен, что использование одного из предложений параметра Java из других ответов будет работать таким же образом.
источник
Я также столкнулся с аналогичной проблемой.
Окружающая среда:
Linux, проект гибернации, драйвер ojdbc6 при запросе базы данных oracle 11g.
разрешение
Параметр TZ не был установлен в Linux-машине, что в основном сообщает оракулу о часовом поясе. Итак, после добавления статуса экспорта «экспорт TZ = UTC» на момент запуска приложения моя проблема была решена.
UTC -> изменить в соответствии с вашим часовым поясом.
источник
Если эта проблема в JDeveloper: измените свойства проекта как для модели, так и для проекта просмотра -> запустить / отладить -> профиль по умолчанию -> изменить, добавьте следующий параметр запуска: -Duser.timezone = Asia / Calcutta
Убедитесь, что указанное выше значение часового пояса получено из вашей базы данных следующим образом:
Наряду с этим вы захотите проверить настройки часового пояса в вашем jdev.conf, а также в JDeveloper -> Меню приложения -> Свойства проекта по умолчанию -> Выполнить / Отладка -> Профиль по умолчанию -> Параметры запуска.
источник
У меня тоже была такая же проблема, когда я пытался создать соединение в JDeveloper. Наш сервер расположен в другом часовом поясе, поэтому он вызвал следующие ошибки:
Я сослался на многие форумы, которые просили включить часовой пояс в параметры Java (Run / Debug / Profile) свойств проекта и свойства проекта по умолчанию, как
-Duser.timezone="+02:00"
b, но это не сработало для меня. Наконец, для меня сработало следующее решение.Добавьте следующую строку в файл конфигурации JDeveloper ( jdev.conf ).
Файл находится в "<корень установки oracle> \ Middleware \ jdeveloper \ jdev \ bin \ jdev.conf".
источник
В моем случае я мог заставить запрос работать, изменив "TZR" на "TZD" ..
источник
Мне удалось решить ту же проблему, установив часовой пояс в своей системе Linux (Centos6.5).
Репост из
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html
установить часовой пояс,
/etc/sysconfig/clock
например, установить ZONE = "America / Los_Angeles"sudo ln -sf / usr / share / zoneinfo / America / Phoenix / etc / localtime
Чтобы узнать значение часового пояса, попробуйте
и найдите файл, который представляет ваш часовой пояс.
После того, как вы установили их, перезагрузите компьютер и попробуйте снова.
источник
У меня была такая же проблема при попытке установить соединение OBIEE с Oracle db. Я изменил часовой пояс Windows с (GMT + 01: 00) Западно-Центральная Африка на (GMT + 01: 00) Брюссель, Копенгаген, Мадрид, Париж. Затем я перезагрузил свой компьютер, и он работал нормально. Похоже, Oracle не смог распознать часовой пояс Западной и Центральной Африки.
источник
Эта проблема возникает из-за того, что код, который пытается подключиться к базе данных, имеет часовой пояс, которого нет в базе данных. Эту проблему также можно решить, установив часовой пояс, как показано ниже, или любой действительный часовой пояс, доступный в oracle db. действительный часовой пояс, который можно найти, выберите * из версии v $;
System.setProperty ("user.timezone", "Америка / Нью-Йорк"); TimeZone.setDefault (ноль);
источник
Столкнувшись с той же проблемой при использовании Eclipse и удаленной базы данных Oracle, изменение часового пояса моей системы в соответствии с часовым поясом сервера базы данных устранило проблему. После изменения часового пояса системы перезапустите машину .
Я надеюсь это может кому-то помочь
источник
Для этого типа ошибки просто измените системное время на стандартный для вашей страны формат GMT.
например, часовой пояс Индии - ченнаи, калькутта.
источник