drv <-dbDriver(“ Oracle”)在命令行R中工作正常,但在RStudio Server上不工作

时间:2019-03-14 10:50:28

标签: r oracle rstudio-server roracle

如标题所示,我正在尝试使用Unix Machine上的ROracle库通过R设置与Oracle DB的连接。 在命令行中使用R我有0个问题,但是在RStudio Server中尝试相同的确切指令时,我出现以下错误。

  

drv <-dbDriver(“ Oracle”)   .oci.Driver(.oci.drv()中的错误,可中断=可中断,unicode_as_utf8 = unicode_as_utf8 ,:     尝试检索错误ORA-01804的文本时出错

这些是libPaths()的输出: 在RStudio服务器中

.libPaths()
[1] "/home/rs_violac/R/x86_64-redhat-linux-gnu-library/3.5"
[2] "/usr/lib64/R/library"                                 
[3] "/usr/share/R/library"

在R(命令行)中

> .libPaths()
[1] "/usr/lib64/R/library" "/usr/share/R/library"

我设置了以下路径: enter image description here

并按照其他stackoverflow答案中的建议将LD设置为share oracle.conf文件。

echo "/oracle/app/oracle/product/12.2.0/client/lib" | sudo tee /etc/ld.so.conf.d/oracle.conf

任何想法或建议如何解决?

编辑:我尝试在RStudio控制台中设置那些enviornments变量,但是没有分辨率

Sys.setenv("OCI_INC"="/oracle/app/oracle/product/12.2.0/client")
Sys.setenv("OCI_LIB"="/oracle/app/oracle/product/12.2.0/client/lib")
Sys.setenv("OCI_LIB64"="/oracle/app/oracle/product/12.2.0/client/lib")
Sys.setenv("TNS_ADMIN"="/oracle/app/oracle/product/12.2.0/client/network/admin")
Sys.setenv("LD_LIBRARY_PATH"="/usr/lib64/R/lib::/lib:/usr/lib/jvm/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib:/oracle/app/oracle/product/12.2.0/client/lib")
Sys.setenv("ORACLE_HOME"="/oracle/app/oracle/product/12.2.0/client")
Sys.setenv("NLS_LANG"="en_US.UTF-8")
Sys.setenv("ORACLE_BASE"="/oracle/app/oracle")
Sys.setenv("LC_ALL"="en_US.UTF-8")

现在错误是:

  

.oci.Driver(.oci.drv()中的错误,可中断=可中断,   unicode_as_utf8 = unicode_as_utf8,:ORA-12715:无效字符   设置指定

错误更改是由ORACLE_HOME env的设置触发的

1 个答案:

答案 0 :(得分:1)

rstudio用户需要在运行rstudio-server的服务器上的环境中设置ORACLE_HOME和ORACLE_HOSTNAME。您可以使用.Renviron配置文件,例如使用BASH shell进行如下操作:

ORACLE_HOME=<your Oracle home>
ORACLE_HOSTNAME=<your host name>
export ORACLE_HOME ORACLE_HOSTNAME