【问题标题】:ORA-01804 error while trying to load "Oracle" dbDriver尝试加载“Oracle”dbDriver 时出现 ORA-01804 错误
【发布时间】:2017-06-05 08:00:49
【问题描述】:

我正在使用 ROracle 并在 R 中执行以下命令:

Sys.getenv()
drv <- dbDriver("Oracle")

这是我在最后一行之后得到的错误:

Error in .oci.Driver(.oci.drv(), interruptible = interruptible, unicode_as_utf8 = unicode_as_utf8,  :
  Error while trying to retrieve text for error ORA-01804

我在 RStudio Server 上使用 RHEL 5 服务器。

我怎样才能避免这个错误?

【问题讨论】:

  • 你能解释一下为什么你对我的问题投了反对票吗?

标签: r oracle rhel roracle


【解决方案1】:

你必须检查这两点:

  • ORACLE_HOME 必须定义环境变量
  • $ORACLE_HOME/lib 路径必须在LD_LIBRARY_PATH 环境变量值中

例如,如果你的ORACLE_HOME/usr/lib/oracle/12.1/client64(这是Oracle Instant Client 安装时的默认值,官方.rpm),执行以下R 命令:

Sys.setenv("ORACLE_HOME" = "/usr/lib/oracle/12.1/client64")
Sys.getenv("LD_LIBRARY_PATH")
# Here check if /usr/lib/oracle/12.1/client64/lib is a part (separated by ":" of the result)
# else, append ":/usr/lib/oracle/12.1/client64/lib" to the result and set the environment variable using:
# Sys.setenv("LD_LIBRARY_PATH" = "/all/the/result:/of/getenv/command:/usr/lib/oracle/12.1/client64/lib")

【讨论】:

    【解决方案2】:

    ORA-01804: 无法初始化时区信息 原因:时区信息文件未正确读取。

    原因是我的 linux oracle 客户端在其 $ORACLE_HOME 目录中缺少一些与时区相关的文件。解决方案是简单地从另一个 oracle 客户端实例复制这些文件。

    这是来自 Oracle 数据库的一般错误消息,表明时区信息文件未正确读取。以下是最常见的解决方案:

    1) 您的 oracle 客户端可能在其 $ORACLE_HOME 目录中缺少一些与时区相关的文件。您可以尝试简单地从另一个 oracle 客户端实例复制这些文件。

    2) Binary 可能没有访问 OCCI 库的权限。请确保权限正确到位。

    3) 检查以确保在您的环境中正确设置了以下路径: LD_LIBRARY_PATH ORACLE_HOME NLS_LANG

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 2014-08-21
      • 1970-01-01
      • 2011-06-01
      • 2014-11-07
      • 1970-01-01
      • 2017-06-03
      相关资源
      最近更新 更多