Oracle Instant Client 时区文件位于何处?

Where is the Oracle Instant Client timezone file located?

我已经按照 oracle site.

中的说明在我的 macOS(Big Sur 版本 11.5.1)上安装了 Oracle 即时客户端版本 19.8.0.0.0

我想更改时区设置 using ORA_TZFILE 文件,但是 oracore\zoneinfo\ 目录在哪里?无处可寻。

我需要这样做,因为远程数据库服务器和客户端之间的时区信息不匹配,因此我无法执行如下查询:

AT TIME ZONE 'UTC' AS DATE

远程服务器正在使用 timezlrg_26.dat。我通过 select * from v$timezone_file 找到了这些信息。因此我需要更改客户端也使用 timezlrg_26.dat.

它最终给我错误“ORA-01805:date/time 操作中可能出现错误”

这是默认目录的样子:

默认时区文件嵌入到 Instant Client 库中,因此您不会将它们视为磁盘上的文件。

要更改您的 Instant Client 版本使用的时区文件:

  • 创建目录层次结构 instantclient_19_8/oracore/zoneinfo 例如像 mkdir -p instantclient_19_8/oracore/zoneinfo

  • 将新时区文件放入该目录

  • 将环境变量 ORA_TZFILE 设置为文件名,例如timezone_n.dat。不要包含路径。

  • 您可以检查运行 genezi -v

    正在使用哪个文件

Oracle 客户端安装手册中对此进行了讨论Environment Variables for Oracle Instant Client

在 Instant Client 的未来主要版本中,您将能够将时区文件放在任何目录中,并将该路径包含在环境变量值中(Oracle 增强功能 31333105)。