What happens, the JDBC client sends the timezone identifier to the Server. The server must know this zone. You can check with
SELECT DISTINCT tzname FROM V$TIMEZONE_NAMES where tzname like 'Etc%';
I have some db servers that know about "Etc / UTC" and "UTC" (tzfile version 18), but others only know "UTC" (tzf version 11).
SELECT FILENAME,VERSION from V$TIMEZONE_FILE;
On the JDBC client side, there is another behavior. Starting with 11.2, the driver sends zone identifiers if it is "known" by Oracle, whereas before that it sent a temporary offset. The problem with this โsending known identifiersโ is that the client does not check which version / content of the time zone is present on the server, but has its own list.
This is explained in the Oracle support article [ID 1068063.1].
It seems that this also depends on the client OS, it is more likely that Etc / UTC will work with Ubuntu than RHEL or Windows. I assume that this is due to some normalization, but I did not understand what exactly.
eckes Mar 31 '14 at 12:22 2014-03-31 12:22
source share