ORA-01882: région de fuseau horaire introuvable

J'accède à une base de données Oracle à partir d'une application java, lorsque j'exécute mon application, j'obtiens l'erreur suivante:

Java.SQL.SQLException: ORA-00604: erreur survenue au niveau SQL récursif 1 ORA-01882: région de fuseau horaire introuvable

77
demandé sur Ahmed Ashour 2012-02-06 10:30:51

17 réponses

Vous pouvez également essayer de vérifier la version du pilote Oracle JDBC et de la base de données Oracle. Juste aujourd'hui, j'ai eu ce problème lors de l'utilisation ojdbc6.jar (version 11.2.0.3.0) pour se connecter à un serveur Oracle 9.2.0.4.0. Le remplacer par ojdbc6.jar version 11.1.0.7.0 résolu le problème.

51
répondu Matteo Steccolini 2012-02-07 13:40:20

Dans une installation simple de SQL-Developer sous Windows, allez dans le répertoire

C:\Program Files\sqldeveloper\sqldeveloper\bin

Et ajouter

AddVMOption -Duser.timezone=CET

Dans le fichier sqldeveloper.conf.

32
répondu Marcus Rickert 2013-11-12 10:59:45

Erreur que j'ai eu:

Erreur de db_connection.java -->> java.SQL.SQLException: ORA-00604: erreur survenue au niveau SQL récursif 1 ORA-01882: région de fuseau horaire introuvable

ORA-00604: erreur survenue au niveau SQL récursif 1ORA-01882: région de fuseau horaire introuvable

Code Précédent:

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

Nouveau Code:

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

Maintenant ça marche!!

22
répondu Waruna Sri Jayanth 2012-08-04 16:37:00

Mettez à jour le fichier oracle/JDBC/defaultConnectionProperties.properties dans n'importe quelle version de la bibliothèque (c'est-à-dire à l'intérieur de votre jar) que vous utilisez pour contenir la ligne ci-dessous:

oracle.jdbc.timezoneAsRegion=false
17
répondu Babatunde Adeyemi 2013-11-27 20:31:34

Ce qui se passe, c'est que le client JDBC envoie l'ID de fuseau horaire au serveur. Le serveur doit connaître cette zone. Vous pouvez vérifier avec

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

J'ai des serveurs db qui connaissent 'Etc / UTC' et ' UTC '(tzfile version 18) mais d'autres ne connaissent que 'UTC' (TZ version 11).

SELECT FILENAME,VERSION from V$TIMEZONE_FILE;

Il existe également un comportement différent du côté client JDBC. À partir de 11.2, le pilote enverra les ID de zone s'il est "connu" à Oracle, alors qu'avant il a envoyé le décalage horaire. Le problème avec cette "envoi d'identifiants connus" est, que le client ne vérifie pas quelle version/contenu du fuseau horaire est présent sur le serveur, mais a sa propre liste.

Ceci est expliqué dans L'article de support Oracle [ID 1068063.1].

Il semble que cela dépend aussi du système D'exploitation Client, il était plus probable que Etc / UTC échoue avec Ubuntu que RHEL ou Windows. Je suppose que cela est dû à une certaine normalisation, mais je n'ai pas compris quoi exactement.

15
répondu eckes 2014-03-31 12:22:17
  1. Dans eclipse aller exécuter - > configuration d'exécution

  2. Là, allez à JRE onglet dans les panneaux latéraux de droite

  3. Dans la section Arguments VM collez ceci

    -Duser.timezone=GMT

  4. Ensuite, Appliquer - > Exécuter

8
répondu Priyan at Dialog 2012-11-13 14:39:40

J'ai eu ce problème lors de l'exécution de tests automatisés à partir d'un serveur d'intégration continue. J'ai essayé d'ajouter L'argument VM "-Duser.timezone=GMT " aux paramètres de construction, mais cela n'a pas résolu le problème. Cependant, l'ajout de la variable d'environnement "TZ=GMT" l'a corrigé pour moi.

4
répondu Matt 2014-10-28 18:45:13

Erreur:

ORA-00604: erreur survenue au niveau SQL récursif 1 ORA-01882: région de fuseau horaire introuvable

Solution: Configuration CIM dans Centos.

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

Ajoutez ces arguments java:

JAVA_ARGS="${JAVA_ARGS} -Duser.timezone=EDT"
3
répondu Guna Sekaran 2018-08-16 08:31:46

Dans Netbeans,

  1. Cliquez avec le bouton droit sur votre projet - > Propriétés
  2. Aller à exécuter (sous catégories)
  3. Entrez-Duser.fuseau horaire = UTC ou-Duser.timezone = GMT sous Options VM.

Cliquez sur Ok, puis relancez votre programme.

Remarque: Vous pouvez également définir d'autres fuseaux horaires en dehors de UTC et GMT.

2
répondu Babatunde Adeyemi 2013-03-22 18:14:50

Si ce problème est dans JDeveloper: Modifiez les propriétés du projet pour le modèle et le projet de vue - > exécuter / déboguer - > profil par défaut - > Modifier ajoutez l'option d'exécution suivante: - Duser.fuseau horaire = Asie / Calcutta

Assurez-vous que la valeur de fuseau horaire ci-dessus est extraite de votre base de données comme suit:

select TZNAME from V$TIMEZONE_NAMES;

Parallèlement à cela, vous voudriez vérifier les paramètres de fuseau horaire dans votre jdev.conf ainsi que dans le JDeveloper - > menu Application - > default project Propertes - > Run / Debug - > Profil Par Défaut - > Options D'Exécution.

2
répondu Mukul Rana 2018-08-16 08:32:49

J'ai aussi eu le même problème quand j'ai essayé de créer une connexion dans JDeveloper. Notre serveur situé dans un fuseau horaire différent et donc il a soulevé les erreurs ci-dessous comme:

ORA-00604: error occurred at recursive SQL level 1 

ORA-01882: timezone region not found

J'ai fait référence à de nombreux forums qui ont demandé d'inclure le fuseau horaire dans les Options Java (Run / Debug / Profile) des propriétés du projet et des propriétés du projet par défaut comme -Duser.timezone="+02:00" bmais cela n'a pas fonctionné pour moi. Enfin, la solution suivante a fonctionné pour moi.

Ajoutez la ligne suivante au fichier de configuration de JDeveloper ( jdev.conf).

AddVMOption -Duser.timezone=UTC+02:00

Le fichier se trouve dans " \ Middleware\jdeveloper\jdev\bin \ jdev.conf".

1
répondu Raj 2014-10-17 11:35:57

Dans mon cas, je pourrais faire fonctionner la requête en changeant " TZR "avec " TZD"..

String query = "select * from table1 to_timestamp_tz(origintime,'dd-mm-yyyy hh24:mi:ss TZD') between ?  and ?";
1
répondu Laura Liparulo 2016-06-02 10:55:51

J'ai rencontré ce problème avec Tomcat. Définir ce qui suit dans $CATALINA_BASE/bin/setenv.sh a résolu le problème:

JAVA_OPTS=-Doracle.jdbc.timezoneAsRegion=false

Je suis sûr que l'utilisation de l'une des suggestions de paramètres Java des autres réponses fonctionnerait de la même manière.

1
répondu bonh 2017-11-01 19:59:42

J'ai également fait face à un problème similaire.

Environnement:

Linux, projet hibernate, pilote ojdbc6 lors de l'interrogation de la base de données oracle 11g.

Résolution

Le paramètre TZ n'a pas été défini sur la machine linux, ce qui explique essentiellement à oracle le fuseau horaire. Donc, après avoir ajouté la déclaration d'exportation "export TZ = UTC"au moment du début de l'application, j'ai résolu mon problème.

UTC -- > changer accorind à votre fuseau horaire.

1
répondu user3721248 2018-05-13 09:58:08

J'ai pu résoudre le même problème en définissant le fuseau horaire dans mon système linux (Centos6. 5).

Reposter à partir de

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

  1. Définir le fuseau horaire dans /etc/sysconfig/clock par exemple définir ZONE= "America / Los_Angeles"

  2. Sudo ln -sf /usr/share/zoneinfo/Amérique/Phoenix /etc/localtime

Pour déterminer la valeur du fuseau horaire, essayez de

ls /usr/share/zoneinfo

Et recherchez le fichier qui représente votre fuseau horaire.

Une fois que vous les avez définis, redémarrez la machine et réessayez.

1
répondu adi-pradhan 2018-08-16 08:32:31

Face au même problème en utilisant Eclipse et une base de données Oracle distante, changer mon fuseau horaire système pour correspondre au fuseau horaire du serveur de base de données a résolu le problème. Redémarrez la machine Après avoir changé le fuseau horaire du système.

J'espère que cela peut aider quelqu'un

0
répondu S_intg 2016-07-28 07:47:40

Java.SQL.SQLException: ORA-00604: erreur survenue au SQL récursif niveau 1 ORA-01882: région de fuseau horaire introuvable

Pour ce type d'erreur, il suffit de changer l'Heure de votre système au format GMT standard de votre pays

Par exemple, le fuseau horaire indien est chennai, kolkata.

0
répondu manjunatha H 2017-11-08 09:18:04