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
SELECT DISTINCT tzname FROM V$TIMEZONE_NAMES where tzname like 'Etc%';
Ich habe einige Datenbankserver, die sich mit 'Etc / UTC' und 'UTC' auskennen (tzfile Version 18), andere kennen nur 'UTC' (tz Version 11).
SELECT FILENAME,VERSION from V$TIMEZONE_FILE;
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.