Ich greife über eine Java-Anwendung auf eine Oracle-Datenbank zu. Wenn ich meine Anwendung ausführe, wird folgende Fehlermeldung angezeigt:
java.sql.SQLException: ORA-00604: Fehler bei rekursiver SQL-Ebene 1 ORA-01882: Zeitzonenbereich nicht gefunden
Antworten:
Sie können auch versuchen, die Version des Oracle JDBC-Treibers und der Oracle-Datenbank zu überprüfen. Erst heute hatte ich dieses Problem, als ich ojdbc6.jar (Version 11.2.0.3.0) verwendete, um eine Verbindung zu einem Oracle 9.2.0.4.0-Server herzustellen. Das Ersetzen durch ojdbc6.jar Version 11.1.0.7.0 löste das Problem.
Ich habe es auch geschafft, ojdbc6.jar Version 11.2.0.3.0 ohne Fehler zu verbinden, indem ich die
oracle.jdbc.timezoneAsRegion=false
Datei oracle / jdbc / defaultConnectionProperties.properties (im JAR) hinzugefügt habe. Diese Lösung haben Sie hier gefundenZuletzt kann man
-Doracle.jdbc.timezoneAsRegion=false
der Befehlszeile oder AddVMOption-Doracle.jdbc.timezoneAsRegion=false
in Konfigurationsdateien hinzufügen , die diese Notation verwendenquelle
In einer einfachen SQL-Developer-Installation unter Windows wechseln Sie in das Verzeichnis
und hinzufügen
zu archivieren
sqldeveloper.conf
.quelle
Fehler, den ich bekam:
Fehler von db_connection.java - >> java.sql.SQLException: ORA-00604: Fehler bei rekursiver SQL-Ebene 1 ORA-01882: Zeitzonenbereich nicht gefunden
ORA-00604: Fehler auf rekursiver SQL-Ebene 1ORA-01882: Zeitzonenbereich nicht gefunden
Vorheriger Code:
neuer Code:
jetzt funktioniert es !!
quelle
Aktualisieren Sie die Datei oracle / jdbc / defaultConnectionProperties.properties in der Version der Bibliothek (dh in Ihrem JAR), die Sie verwenden, um die folgende Zeile zu enthalten:
quelle
Was passiert ist, dass der JDBC-Client die Zeitzonen-ID an den Server sendet. Der Server muss diese Zone kennen. Sie können mit überprüfen
Ich habe einige Datenbankserver, die sich mit 'Etc / UTC' und 'UTC' auskennen (tzfile Version 18), andere kennen nur 'UTC' (tz Version 11).
Es gibt auch ein anderes Verhalten auf der JDBC-Clientseite. Ab 11.2 sendet der Treiber die Zonen-IDs, wenn sie Oracle "bekannt" sind, während zuvor der Zeitversatz gesendet wurde. Das Problem bei diesem "Senden bekannter IDs" besteht darin, dass der Client nicht überprüft, welche Zeitzonenversion / welcher Zeitzoneninhalt auf dem Server vorhanden ist, sondern über eine eigene Liste verfügt.
Dies wird im Oracle-Support-Artikel [ID 1068063.1] erläutert.
Es scheint, dass es auch vom Client-Betriebssystem abhängt. Es war wahrscheinlicher, dass Etc / UTC mit Ubuntu fehlschlägt als mit RHEL oder Windows. Ich denke, das liegt an einer Normalisierung, aber ich habe nicht genau herausgefunden, was.
quelle
In Eclipse gehen Sie laufen -> Konfiguration ausführen
Gehen Sie dort zur Registerkarte JRE in den rechten Seitenbereichen
Fügen Sie dies im Abschnitt VM-Argumente ein
-Duser.timezone=GMT
dann Übernehmen -> Ausführen
quelle
Ich hatte dieses Problem beim Ausführen automatisierter Tests von einem Server für kontinuierliche Integration. Ich habe versucht, das VM-Argument "
-Duser.timezone=GMT
" zu den Build-Parametern hinzuzufügen , aber das hat das Problem nicht gelöst. Das Hinzufügen der Umgebungsvariablen "TZ=GMT
" hat dies jedoch für mich behoben.quelle
ERROR :
Lösung: CIM-Setup in Centos.
Fügen Sie diese Java-Argumente hinzu:
quelle
In Netbeans
Klicken Sie auf OK und führen Sie das Programm erneut aus.
Hinweis: Sie können neben UTC und GMT auch andere Zeitsteine festlegen.
quelle
Ich bin auf dieses Problem mit Tomcat gestoßen. Durch Einstellen der folgenden
$CATALINA_BASE/bin/setenv.sh
Option wurde das Problem behoben:Ich bin sicher, dass die Verwendung eines der Java-Parametervorschläge aus den anderen Antworten auf die gleiche Weise funktionieren würde.
quelle
Ich stand auch vor einem ähnlichen Problem.
Umgebung:
Linux, Ruhezustand Projekt, ojdbc6 Treiber beim Abfragen der Oracle 11g Datenbank.
Auflösung
Der TZ-Parameter wurde in einer Linux-Maschine nicht eingestellt, die Orakel im Grunde über die Zeitzone informiert. Nach dem Hinzufügen der Exportanweisung "export TZ = UTC" zum Zeitpunkt des Anwendungsstarts wurde mein Problem gelöst.
UTC -> Ändern Sie entsprechend Ihrer Zeitzone.
quelle
Wenn dieses Problem in JDeveloper auftritt: Ändern Sie die Projekteigenschaften sowohl für das Modell als auch für das Ansichtsprojekt -> Ausführen / Debuggen -> Standardprofil -> Bearbeiten. Fügen Sie die folgende Ausführungsoption hinzu: -Duser.timezone = Asia / Calcutta
Stellen Sie sicher, dass der oben genannte Zeitzonenwert wie folgt aus Ihrer Datenbank abgerufen wird:
Außerdem möchten Sie die Zeitzoneneinstellungen in Ihrer jdev.conf sowie in JDeveloper -> Anwendungsmenü -> Standardprojekteigenschaften -> Ausführen / Debuggen -> Standardprofil -> Ausführungsoptionen überprüfen.
quelle
Ich hatte auch das gleiche Problem, als ich versuchte, eine Verbindung in JDeveloper herzustellen. Unser Server befindet sich in einer anderen Zeitzone und hat daher die folgenden Fehler ausgelöst:
Ich habe viele Foren, in denen gefragt wurde, ob die Zeitzone in die Java-Optionen (Ausführen / Debuggen / Profil) der Projekteigenschaften und der Standardprojekteigenschaften aufgenommen werden soll, als
-Duser.timezone="+02:00"
b bezeichnet, aber es hat bei mir nicht funktioniert. Schließlich hat die folgende Lösung für mich funktioniert.Fügen Sie der Konfigurationsdatei des JDeveloper ( jdev.conf ) die folgende Zeile hinzu .
Die Datei befindet sich unter "<Oracle-Installationsstamm> \ Middleware \ jdeveloper \ jdev \ bin \ jdev.conf".
quelle
In meinem Fall könnte ich die Abfrage zum Laufen bringen, indem ich "TZR" durch "TZD" ändere.
quelle
Ich konnte das gleiche Problem lösen, indem ich die Zeitzone in meinem Linux-System (Centos6.5) einstellte.
Reposting von
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html
setze die Zeitzone in
/etc/sysconfig/clock
zB auf ZONE = "America / Los_Angeles"sudo ln -sf / usr / share / zoneinfo / Amerika / Phoenix / etc / localtime
Um den Zeitzonenwert herauszufinden, versuchen Sie es
und suchen Sie nach der Datei, die Ihre Zeitzone darstellt.
Sobald Sie diese festgelegt haben, starten Sie den Computer neu und versuchen Sie es erneut.
quelle
Ich hatte das gleiche Problem, als ich versuchte, eine Verbindung zwischen OBIEE und Oracle db herzustellen. Ich habe meine Windows-Zeitzone von (GMT + 01: 00) West-Zentralafrika auf (GMT + 01: 00) Brüssel, Kopenhagen, Madrid, Paris geändert. Dann habe ich meinen Computer neu gestartet und es hat gut funktioniert. Anscheinend konnte Oracle die Zeitzone West-Zentralafrikas nicht erkennen.
quelle
Dieses Problem tritt auf, wenn der Code, der versucht, eine Verbindung zu db herzustellen, eine Zeitzone hat, die nicht in db enthalten ist. Sie können das Problem auch beheben, indem Sie die Zeitzone wie folgt oder eine gültige Zeitzone in oracle db festlegen. gültige Zeitzone, die gefunden werden kann, wählen Sie * aus der v $ -Version;
System.setProperty ("user.timezone", "America / New_York"); TimeZone.setDefault (null);
quelle
Das gleiche Problem bei Verwendung von Eclipse und einer entfernten Oracle-Datenbank wurde behoben, indem meine Systemzeitzone so geändert wurde , dass sie mit der Zeitzone des Datenbankservers übereinstimmt. Starten Sie die Maschine neu, nachdem Sie die Systemzeitzone geändert haben.
Ich hoffe das kann jemandem helfen
quelle
Ändern Sie für diese Art von Fehler einfach Ihre Systemzeit in das Standard-GMT-Format Ihres Landes
zB indische Zeitzone ist Chennai, Kolkata.
quelle