ORA-01882: регион часового пояса не найден



Я обращаюсь к базе данных Oracle из приложения java, когда я запускаю свое приложение, я получаю следующую ошибку:




java.язык SQL.SQLException: ORA-00604: произошла ошибка на рекурсивном уровне SQL 1
ORA-01882: регион часового пояса не найден


757   17  

17 ответов:

вы также можете попробовать проверить версию драйвера Oracle jdbc и базы данных Oracle. Только сегодня у меня была эта проблема при использовании ojdbc6.jar (версия 11.2.0.3.0) для подключения к серверу Oracle 9.2.0.4.0. Замена его на ojdbc6.jar version 11.1.0.7.0 решил проблему.

в простой установке SQL-разработчика под Windows перейдите в каталог

C:\Program Files\sqldeveloper\sqldeveloper\bin

и добавить

AddVMOption -Duser.timezone=CET

в файле sqldeveloper.conf.

ошибки я нашел :

ошибка из db_connection.java -- > > java.язык SQL.SQLException: ORA-00604: произошла ошибка на рекурсивном уровне SQL 1 ORA-01882: регион часового пояса не найден

ORA-00604: произошла ошибка на рекурсивном уровне SQL 1ORA-01882: регион часового пояса не найден

Prev код:

 public Connection getOracle() throws Exception {
     Connection conn = null;
     Class.forName("oracle.jdbc.driver.OracleDriver");
     conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:tap", "username", "pw");
     return conn;
}

новый код:

 public Connection getOracle() throws Exception {
     TimeZone timeZone = TimeZone.getTimeZone("Asia/Kolkata");
     TimeZone.setDefault(timeZone);
     Connection conn = null;
     Class.forName("oracle.jdbc.driver.OracleDriver");
     conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:tap", "username", "pw");
     return conn;
}

теперь она работает!!

Обновить файл oracle/jdbc / defaultConnectionProperties.свойства в любой версии библиотеки (т. е. внутри фляги) вы используете, чтобы содержать строку ниже:

oracle.jdbc.timezoneAsRegion=false

происходит то, что клиент JDBC отправляет идентификатор часового пояса на сервер. Сервер должен знать эту зону. Вы можете проверить с

SELECT DISTINCT tzname FROM V$TIMEZONE_NAMES where tzname like 'Etc%';

у меня есть несколько серверов БД, которые знают о "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. Я думаю, это связано с некоторой нормализацией, но я не понял, что именно.

  1. в eclipse go выполнить ->выполнить конфигурации

  2. туда идти JRE вкладка в правой боковой панели

  3. на параметры VM вставить в

    -Duser.timezone=GMT

  4. затем применить - > выполнить

у меня была эта проблема при запуске автоматических тестов с сервера непрерывной интеграции. Я попытался добавить аргумент VM"-Duser.timezone=GMT " к параметрам сборки, но это не решило проблему. Однако, добавив переменную окружения"TZ=GMT " сделал это для меня.

ошибка :

ORA-00604: произошла ошибка на рекурсивном уровне SQL 1 ORA-01882: регион часового пояса не найден

решение: Настройка CIM в Centos.

/opt/oracle/product/ATG/ATG11.2/home/bin/dynamoEnv.sh

добавьте эти аргументы java:

JAVA_ARGS="${JAVA_ARGS} -Duser.timezone=EDT"

В Netbeans,

  1. щелкните правой кнопкой мыши проект -> свойства
  2. перейти к запуску (в разделе Категории)
  3. Enter-Duser.часовой пояс=UTC или-Duser.часовой пояс=GMT в разделе параметры виртуальной машины.

Нажмите кнопку ОК, а затем повторно запустите программу.

Примечание: Вы также можете установить другие временные точки, кроме UTC и GMT.

Если эта проблема находится в JDeveloper: Измените свойства проекта как для модели, так и для проекта представления - > выполнить / отладить - > профиль по умолчанию -> изменить добавьте следующий параметр запуска : -Duser.часовой пояс=Азия / Калькутта

убедитесь, что указанное выше значение часового пояса извлекается из базы данных следующим образом:

select TZNAME from V$TIMEZONE_NAMES;

наряду с этим вы хотели бы проверить настройки часового пояса в вашем jdev.conf, а также в меню JDeveloper -> Application - > Default Project Propertes -> Запуск / Отладка - > Профиль По Умолчанию - > Параметры Запуска.

у меня тоже была такая же проблема, когда я пытался создать подключение в JDeveloper. Наш сервер расположен в другом часовом поясе и, следовательно, он поднял следующие ошибки, как:

ORA-00604: error occurred at recursive SQL level 1 

ORA-01882: timezone region not found

Я сослался на многие форумы, которые просили включить часовой пояс в Параметры Java (Run/Debug/Profile) свойств проекта и свойств проекта по умолчанию как -Duser.timezone="+02:00" но это не сработало для меня. Наконец, следующее решение сработало для меня.

добавить следующую строку в JDeveloper по конфигурационный файл (jdev.conf).

AddVMOption -Duser.timezone=UTC+02:00

файл находится в папке " \Middleware\jdeveloper\jdev\bin\jdev.конф".

в моем случае я мог бы заставить запрос работать, изменив "TZR "с"TZD"..

String query = "select * from table1 to_timestamp_tz(origintime,'dd-mm-yyyy hh24:mi:ss TZD') between ?  and ?";

я столкнулся с этой проблемой с Tomcat. Установка следующего в $CATALINA_BASE/bin/setenv.sh решается вопрос:

JAVA_OPTS=-Doracle.jdbc.timezoneAsRegion=false

Я уверен, что использование одного из предложений параметров Java из других ответов будет работать таким же образом.

Я также же столкнулся с подобной проблемой.

среда:

Linux, проект hibernate, драйвер ojdbc6 при запросе базы данных oracle 11g.

разрешение

параметр TZ не был установлен в linux-машине, что в основном говорит oracle о часовом поясе. Итак, после добавления Export statment "export TZ=UTC" во время запуска приложения решил мою проблему.

UTC-- > изменить accorind для вашего часового пояса.

я смог решить ту же проблему, установив часовой пояс в моей системе linux (Centos6.5).

перенос из

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

  1. установить часовой пояс в /etc/sysconfig/clock например, установить в ZONE= "America / Los_Angeles"

  2. судо ЛН-СФ /usr/доли/временной зоны/Америка/Финикс /и т. д./локальным

чтобы выяснить значение часового пояса попробуй

ls /usr/share/zoneinfo

и искать файл, который представляет ваш часовой пояс.

после установки этих перезагрузите машину и повторите попытку.

столкнувшись с той же проблемой, используя Eclipse и удаленную базу данных Oracle, изменив my системный часовой пояс чтобы соответствовать часовому поясу сервера баз данных Исправлена проблема. перезапустить машину после изменения часового пояса системы.

Я надеюсь, что это может помочь кому-то

java.язык SQL.SQLException: ORA-00604: произошла ошибка при рекурсивном SQL уровень 1 ORA-01882: регион часового пояса не найден

для этого типа ошибки просто измените системное время на стандартный формат GMT вашей страны

например, индийский часовой пояс-Ченнаи, Калькутта.

Comments

    Ничего не найдено.