我遇到了将我的C ++应用程序连接到Oracle DB的问题,我收到错误
"[OracleException] errcode: 1804, desc: Error while trying to retrieve text for error ORA-01804".
答案 0 :(得分:3)
我在使用C ++ OCCI应用程序时遇到了这样的问题,该应用程序在尝试连接到oracle db时遇到oracle::occi::SQLException
。
ORA-01804:
failure to initialize timezone information
Cause: The timezone information file was not properly read.
原因是我的linux oracle客户端在其$ORACLE_HOME
目录中缺少一些与时区相关的文件。
解决方案是简单地从另一个oracle客户端实例复制这些文件。
答案 1 :(得分:2)
另一个可能的原因:Binary无权访问OCCI库... 由于我错误地设置了OCCI库所在的文件夹模式,我遇到了这样的情况。
答案 2 :(得分:2)
我在CentOS 7中使用OCCI,遇到相同的问题,只需将libociicus.so添加到LD_LIBRARY_PATH中即可解决该问题。
答案 3 :(得分:1)
我对cx_oracle遇到了同样的错误(通过python)。对于此特定情况,环境变量中缺少ORACLE_HOME。 使用Windows Cli设置Oracle_home(使用oracle文件夹):
setx ORACLE_HOME "C:\oracle\oc121\"
在某些数据库连接上,还需要设置TNS_ADMIN:
setx TNS_ADMIN "%ORACLE HOME%\network\admin"
答案 4 :(得分:0)
您正在通过数据库收到ORA-01804
,ORA-01804
的说明是:
failure to initialize timezone information
Cause: The timezone information file was not properly read.
答案 5 :(得分:0)
就我而言,libociicus.so
(可以在Oracle Instant Client中找到)丢失了。
答案 6 :(得分:0)
另一个难以确定的原因是Oracle安装文件夹不完整。对我来说,这样做的原因是某个进程只是(未成功)卸载了Oracle客户端。
作为PATH env中的bin文件夹确实很棘手。 var包含oci.dll(以及许多其他DLL-s),但是在JDBC
下的其他地方,还有其他文件丢失。
所以:请检查安装文件夹中是否包含所有必需的文件!
答案 7 :(得分:0)
我知道这是一个老问题,但没有答案可以解决我的问题(oracledb nodejs 包,macOS)。
但是,我再次为自己找到了解决方案。
解决方案是将 libociei.dylib
移动到 /usr/locale/lib
文件夹中。就是这样。
答案 8 :(得分:0)
对我来说,这是因为我的即时客户端和数据库服务器使用的版本不同。所以我不得不匹配他们的版本来解决这个错误。显然,如果版本不同,Oracle 无法读取数据库时区。