【问题标题】:Error while trying to retrieve text for error ORA-01804尝试检索错误 ORA-01804 的文本时出错
【发布时间】:2012-10-11 10:46:08
【问题描述】:

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

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

【问题讨论】:

    标签: oracle


    【解决方案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"
    

    【讨论】:

      【解决方案2】:

      我在 CentOS 7 中使用 OCCI,遇到了同样的问题,只需将 libociicus.so 添加到 LD_LIBRARY_PATH 即可解决问题。

      【讨论】:

      • 确实,libociicus.so 解决了两个问题。 (1) 缺少的时区文件 (2) ORA-01804 的缺少文本。
      【解决方案3】:

      您正在通过数据库接收ORA-01804ORA-01804的描述是:

      failure to initialize timezone information
      Cause:   The timezone information file was not properly read.
      

      【讨论】:

      • 我遇到了同样的错误,请您详细说明您是如何解决的。谢谢!
      • 没有 RCA 并修复此问题
      【解决方案4】:

      我在使用 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 客户端实例复制这些文件。

      【讨论】:

      • 能否请您指定丢失的文件
      【解决方案5】:

      另一个可能的原因:二进制无权访问OCCI库... 由于我错误地设置了OCCI库所在文件夹的模式,我遇到了这种情况。

      【讨论】:

        【解决方案6】:

        就我而言,libociicus.so(可以在Oracle Instant Client 中找到)丢失了。

        【讨论】:

        • 我在即时客户端看不到这个so文件了。
        【解决方案7】:

        另一个微不足道但难以确定的原因可能是 Oracle 安装文件夹不完整。对我来说,这样做的一个原因是某个进程刚刚(未成功)卸载了 Oracle 客户端。

        PATH 环境中的 bin 文件夹真的很棘手。 var 包含 oci.dll(和许多其他 DLL-s),但在 C:\oracle\11\ 下的其他地方缺少其他文件。

        所以:检查安装文件夹是否包含所有必需的文件!

        【讨论】:

          【解决方案8】:

          我知道这是一个老问题,但没有答案可以解决我的问题(oracledb nodejs 包,macOS)。

          但是,我再次为自己找到了解决方案。

          解决方案是将libociei.dylib 移动到/usr/locale/lib 文件夹中。就是这样。

          【讨论】:

            【解决方案9】:

            对我来说,这是因为我的即时客户端和数据库服务器的版本使用了不同的版本。所以我不得不匹配他们的版本来解决这个错误。显然,如果版本不同,Oracle 将无法读取 DB 时区。

            【讨论】:

              猜你喜欢
              • 2021-05-18
              • 1970-01-01
              • 1970-01-01
              • 2012-09-15
              • 2017-06-05
              • 1970-01-01
              • 1970-01-01
              • 2014-08-21
              • 1970-01-01
              相关资源
              最近更新 更多