-- user SYS or anyone with SYSDBA privilege can query that view:
select *
from v$timezone_file;
-- example output:
FILENAME VERSION
timezlrg_14.dat 14
然后您可以检查即时客户端版本(在Linux上):
# your instant client path could be different
$ cd /usr/lib/oracle/12.2/client64/bin
$ ./genezi -v
Client Shared Library 64-bit - 12.2.0.1.0
System name: Linux
Release: 4.15.0-121-generic
Version: #123-Ubuntu SMP Mon Oct 5 16:16:40 UTC 2020
Machine: x86_64
Operating in Instant Client mode.
Small timezone file = /usr/lib/oracle/12.2/oracore/zoneinfo/timezone_26.dat
Large timezone file = /usr/lib/oracle/12.2/oracore/zoneinfo/timezlrg_26.dat
2条答案
按热度按时间k4emjkb11#
我还遇到了错误“ORA-01805:将数据库从11 g升级到19 C后,客户端出现“可能的日期/时间操作错误”问题。已升级客户端,但错误仍未解决。
解决方法是将$ORACLE_HOME/oracore/zoneinfo内容复制到客户端的同一目录中。(虽然不确定是否支持此操作,但我会验证)
zsohkypk2#
Oracle的数据库全球化支持指南值得一读。然后您将了解到,对于时区感知客户端,您需要考虑一些细微差别。只有部分客户端可以连接不同版本的时区文件-它适用于Oracle Database 11 g和更高版本,以及OCI、JDBC、ProC和SQLPlus等客户端。对于其他客户端:
应该假定,此类客户端无法与时区文件与客户端不同的数据库服务器一起操作
一般来说,OCI在混合模式下是受支持的,所以
cx_oracle
应该可以工作。但是...我在Oracle 11 g和cx_oracle
(不记得版本)上遇到了问题。解决方案是安装与数据库完全匹配的即时客户端版本。当我在11.2版本而不是12.2版本中安装即时客户端时,错误消失了。因此,查找数据库版本:
找到匹配的即时客户端应该能用。
可以使用以下查询检查数据库时区文件版本:
然后您可以检查即时客户端版本(在Linux上):
在上面的示例中,数据库的时区文件版本为14,客户端的时区文件版本为26。