ORA-01882: область часового пояса не найдена

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

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

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

В простой установке SQL-Developer под 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: область часового пояса не найдена

Пред. Код:

  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.properties в любой версии библиотеки (т. Е. Внутри вашей банки), которую вы используете, чтобы содержать следующую строку:

 oracle.jdbc.timezoneAsRegion=false 

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

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

У меня есть некоторые серверы db, которые знают о «Etc / UTC» и «UTC» (tzfile version 18), но другие знают только «UTC» (версия tz 11).

 SELECT FILENAME,VERSION from V$TIMEZONE_FILE; 

На стороне клиента JDBC существует и другое поведение. Начиная с 11.2, драйвер отправляет идентификаторы зон, если он «известен» Oracle, тогда как перед этим он отправил временное смещение. Проблема с этой «отправкой известных идентификаторов» заключается в том, что клиент не проверяет, какая версия / содержимое временной зоны присутствует на сервере, но имеет свой собственный список.

Это объясняется в статье поддержки Oracle [ID 1068063.1].

Похоже, что это также зависит от ОС клиента, более вероятно, что с помощью Ubuntu сработает Etc / UTC, чем RHEL или Windows. Я предполагаю, что это связано с некоторой нормализацией, но я не понял, что именно.

  1. в eclipse go run -> запустить конфигурацию

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

  3. в разделе « Аргументы VM » вставьте это

    -Duser.timezone=GMT

  4. затем Apply -> Run

У меня была эта проблема при запуске автоматических тестов с сервера непрерывной интеграции. Я попытался добавить аргумент 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. Введите -Duser.timezone = UTC или -Duser.timezone = GMT в разделе «Параметры VM».

Нажмите «ОК», а затем запустите свою программу.

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

Если эта проблема возникает в JDeveloper: измените свойства проекта как для модели, так и для проекта проекта -> run / debug -> default profile -> edit, добавьте следующую опцию запуска: -Duser.timezone = Asia / Calcutta

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

 select TZNAME from V$TIMEZONE_NAMES; 

Наряду с этим вы хотите проверить настройки часового пояса в вашем jdev.conf, а также в JDeveloper -> Меню приложения -> Default Project Propertes -> Run / Debug -> Default Profile -> Run Options.

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

 ORA-00604: error occurred at recursive SQL level 1 ORA-01882: timezone region not found 

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

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

 AddVMOption -Duser.timezone=UTC+02:00 

Файл находится в папке « \ Middleware \ jdeveloper \ jdev \ bin \ jdev.conf».

В моем случае я мог бы заставить запрос работать, изменив «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 project, драйвер ojdbc6 при запросе базы данных oracle 11g.

разрешение

Параметр TZ не был установлен в Linux-машине, что в основном говорит о часовом поясе о часовом поясе. Итак, после добавления экспортной статистики «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. sudo ln -sf / usr / share / zoneinfo / Америка / Феникс / etc / localtime

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

 ls /usr/share/zoneinfo 

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

После того, как вы перезагрузите компьютер и повторите попытку.

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

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

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

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

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

  • Всегда ли полезно хранить время в UTC или это тот случай, когда лучше хранить в местное время?
  • Как хранить дату и время и временные метки в часовом поясе UTC с JPA и Hibernate
  • Как установить часовой пояс по умолчанию в node.js?
  • Драйвер JDBC MySQL 5.1.33 - Проблема с часовым поясом
  • Как использовать пользовательское время в браузере для проверки разницы во времени между клиентом и сервером
  • Преобразование между локальными временами и GMT / UTC в C / C ++
  • Как обрабатывать календарные часовые пояса с помощью Java?
  • Как конвертировать дату с одного часового пояса в другой часовой пояс
  • Преобразование временной зоны
  • Список идентификаторов Timezone для использования с FindTimeZoneById () в C #?
  • Часовой пояс с рельсами 3
  • Давайте будем гением компьютера.