我试图在python代码中执行一个SQL查询,并获得
ORA-01805:可能的日期/时间操作错误。
我该如何解决这个问题?我已经下载了最新的甲骨文即时客户端file..how,我应该更改日期吗?
发布于 2022-06-13 21:12:28
值得阅读Oracle的“数据库全球化支持指南”。然后,您将被告知,对于时区感知客户端,您需要考虑一些细微差别。只有一些客户端可以连接不同版本的时区文件--它适用于Oracle数据库11g及更高版本,以及诸如OCI、JDBC、Pro*C和SQL*Plus等客户端。其他客户:
应该假定这样的客户端不能使用与客户端不同的时区文件的数据库服务器进行操作。
一般来说,OCI是在混合模式下支持的,因此cx_oracle
应该可以工作。但是..。我遇到了Oracle11g和cx_oracle
(不记得版本)的问题。解决方案是以与数据库完全匹配的版本安装即时客户端。当我在11.2版本而不是12.2版本中安装即时客户端时,错误消失了。
因此,请查找数据库版本:
select * from v$version;
找到匹配的即时客户端。应该管用的。
可以使用该查询检查数据库的时区文件版本:
-- 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
在上面的例子中,数据库在版本14中有时区文件,客户端在版本26中有时区文件。
https://stackoverflow.com/questions/72604577
复制相似问题