尝试检索错误ORA-01804的文本时出错

时间:2012-10-11 10:46:09

标签: oracle

我遇到了将我的C ++应用程序连接到Oracle DB的问题,我收到错误

  

"[OracleException] errcode: 1804, desc: Error while trying to retrieve text for error ORA-01804".

9 个答案:

答案 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-01804ORA-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 无法读取数据库时区。