Pregunta ORA-01882: región de zona horaria no encontrada


Estoy accediendo a una base de datos Oracle desde una aplicación java, cuando ejecuto mi aplicación obtengo el siguiente error:

java.sql.SQLException: ORA-00604: se produjo un error en el nivel recursivo de SQL 1   ORA-01882: región de zona horaria no encontrada


73
2018-02-06 06:30


origen


Respuestas:


También puede intentar verificar la versión del controlador jdbc de Oracle y la base de datos Oracle. Hoy tuve este problema cuando uso ojdbc6.jar (versión 11.2.0.3.0) para conectarme a un servidor Oracle 9.2.0.4.0. Sustituirlo por ojdbc6.jar versión 11.1.0.7.0 resolvió el problema.


49
2018-02-07 13:40



En una simple instalación de SQL-Developer en Windows vaya al directorio

C:\Program Files\sqldeveloper\sqldeveloper\bin

y añadir

AddVMOption -Duser.timezone=CET

archivar sqldeveloper.conf.


32
2017-11-12 10:59



Error que obtuve:

Error de db_connection.java - >> java.sql.SQLException: ORA-00604: se produjo un error en el nivel recursivo de SQL 1  ORA-01882: región de zona horaria no encontrada

ORA-00604: se produjo un error en el nivel recursivo de SQL 1ORA-01882: zona horaria región no encontrada

Código anterior:

 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;
}

nuevo código:

 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;
}

ahora está funcionando !!


22
2017-08-04 16:37



Actualiza el archivo oracle / jdbc / defaultConnectionProperties.properties en cualquier versión de la biblioteca (es decir, dentro de su jar) que está utilizando para contener la siguiente línea:

oracle.jdbc.timezoneAsRegion=false

16
2017-11-22 11:08



Lo que sucede es que el cliente JDBC envía la identificación de la zona horaria al servidor. El servidor necesita saber esa zona. Puedes consultar con

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

Tengo algunos servidores db que saben sobre 'Etc / UTC' y 'UTC' (tzfile versión 18) pero otros solo conocen 'UTC' (tz versión 11).

SELECT FILENAME,VERSION from V$TIMEZONE_FILE;

También hay un comportamiento diferente en el lado del cliente JDBC. Comenzando con 11.2, el controlador enviará los ID de zona si es "conocido" por Oracle, mientras que antes envió el desplazamiento de tiempo. El problema con este "envío de identificadores conocidos" es que el cliente no verifica qué versión / contenido de zona horaria está presente en el servidor, sino que tiene su propia lista.

Esto se explica en el artículo de soporte de Oracle [ID 1068063.1].

Parece que también depende del sistema operativo del cliente, era más probable que Etc / UTC fallara con Ubuntu que con RHEL o Windows. Supongo que esto se debe a cierta normalización, pero no me he dado cuenta de qué exactamente.


15
2018-03-31 12:22



  1. en eclipse ir correr -> ejecutar configuración 

  2. allí ve a JRE pestaña en los paneles laterales derechos

  3. en Argumentos VM sección pegar esto

    -Duser.timezone=GMT

  4. luego Aplicar -> Ejecutar


8
2017-11-13 14:39



Tuve este problema al ejecutar pruebas automatizadas desde un servidor de integración continua. Traté de agregar el argumento VM "-Duser.timezone=GMT"a los parámetros de compilación, pero eso no resolvió el problema. Sin embargo, agregando la variable de entorno"TZ=GMT"Lo arreglé para mí.


4
2017-10-28 18:45