【问题标题】:Unable to connect to Oracle datable using ROracle on Linux (error ORA-01804, able to using Sql*Plus)无法在 Linux 上使用 ROracle 连接到 Oracle 数据表(错误 ORA-01804,能够使用 Sql*Plus)
【发布时间】:2017-01-18 14:42:45
【问题描述】:

我正在尝试使用 ROracle 连接到 Oracle。我可以从终端(在 Linux 上)使用 Sql*Plus,但在 R 中使用以下代码:

 library(ROracle)
 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 3.2.5 版。

我与 Oracle 数据库的连接是本地连接。我的环境变量已永久设置在配置文件中,因此不必再次明确设置它们。但是,为了安全起见,我确实再次明确设置了它们:

 Sys.setenv()

不出所料,这没有帮助。

我什至不确定从哪里开始,所以任何指针都将不胜感激。提前谢谢!

**编辑:我也知道 ORA-01804 错误与时区读取问题有关。所以,我尝试设置

 NLS_LANG=en_US.UTF8

在启动 SQL*Plus 并执行之后

 !echo $LANG

这给了我 NLS_LANG 参数。这现在给了我 ORA-12715 错误:

 ORA-12715:invalid character set specified

这表明 NLS_LANG 参数不正确。我尝试过使用各种不同的 UTF-8、en、US、American、America、English 等组合,但似乎都不起作用!

【问题讨论】:

    标签: r linux database oracle roracle


    【解决方案1】:

    我在 Mac 上找到了解决此 ORA-01804 错误的方法。如果从命令行启动 R,则必须从即时客户端目录中启动 R。所以先做:

    cd /path/to/instantclient_11_2
    

    为避免在 RStudio 中出现此错误,请转到工具 > 全局选项并将默认工作目录更改为即时客户端目录:

    请注意,在 R 中使用 setwd("/path/to/instantclient_11_2") 在从命令行启动 R 时有效,但在 RStudio 中无效。

    顺便说一句,我没有必要导出 ORACLE_HOME。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题并通过关注Oracle's instruction on Installing RStudio Server 解决了它。

      编辑配置文件 .Renviron。提供ORACLE_HOME 的值。例如,使用 BASH shell:

      cd ~
      sudo vi .Renviron
          ORACLE_HOME=ORACLE_HOME
      
      export ORACLE_HOME
      

      注意事项:

      • 在运行Sys.getenv() 时,我只缺少ORACLE_HOME 环境变量。如果您还缺少LD_LIBRARY_PATH,您可能需要将rsession-ld-library-path=RHOME/lib:ORACLE_HOME/lib 添加到/etc/rstudio/rserver.conf
      • 您可能还需要 ORACLE_HOSTNAMEORACLE_SID,具体取决于您的数据库

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-05
        • 2017-06-03
        • 2021-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-21
        • 2014-03-02
        相关资源
        最近更新 更多