Apa yang terjadi adalah, klien JDBC mengirimkan ID zona waktu ke Server. Server perlu mengetahui zona itu. Anda bisa mengeceknya dengan
SELECT DISTINCT tzname FROM V$TIMEZONE_NAMES where tzname like 'Etc%';
Saya memiliki beberapa server db yang tahu tentang 'Etc / UTC' dan 'UTC' (tzfile versi 18) tetapi yang lain hanya tahu 'UTC' (tz versi 11).
SELECT FILENAME,VERSION from V$TIMEZONE_FILE;
Ada juga perilaku yang berbeda di sisi klien JDBC. Dimulai dengan 11.2 driver akan mengirimkan ID zona jika "diketahui" ke Oracle, sedangkan sebelumnya mengirimkan offset waktu. Masalah dengan "pengiriman ID yang diketahui" ini adalah, bahwa klien tidak memeriksa versi / konten zona waktu yang ada di server tetapi memiliki daftarnya sendiri.
Ini dijelaskan dalam Artikel Dukungan Oracle [ID 1068063.1].
Sepertinya itu juga tergantung pada OS Klien, lebih mungkin Etc / UTC gagal dengan Ubuntu daripada RHEL atau Windows. Saya kira ini karena beberapa normalisasi tetapi saya belum tahu persis apa.