1

我正在尝试使用 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 等组合,但似乎都不起作用!

4

2 回答 2

0

我遇到了同样的问题,并按照Oracle 关于安装 RStudio Server 的说明解决了这个问题。

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

cd ~
sudo vi .Renviron
    ORACLE_HOME=ORACLE_HOME

export ORACLE_HOME

笔记:

  • 运行时Sys.getenv(),我只缺少ORACLE_HOMEenv 变量。如果您还缺少LD_LIBRARY_PATH,则可能需要添加rsession-ld-library-path=RHOME/lib:ORACLE_HOME/lib/etc/rstudio/rserver.conf.
  • 您可能还需要ORACLE_HOSTNAME并且ORACLE_SID取决于您的数据库
于 2018-11-14T17:09:03.557 回答
0

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

cd /path/to/instantclient_11_2

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

在此处输入图像描述

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

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

于 2017-03-24T10:07:17.297 回答