drv <- dbDriver("Oracle") 在命令行 R 中工作正常但在 RStudio 服务器上不工作
drv <- dbDriver("Oracle") works fine in Command-line R but not working on RStudio Server
如标题所示,我正在尝试使用 Unix 机器上的 ROracle 库通过 R 设置与 Oracle 数据库的连接。
在命令行中使用 R 我有 0 个问题,但是当在 RStudio Server 中尝试完全相同的指令时,我遇到了以下错误。
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
这些是 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"
我设置了以下路径:
并按照其他 Whosebug answear
中的建议将 LD 设置为共享 oracle.conf 文件
echo "/oracle/app/oracle/product/12.2.0/client/lib" | sudo tee /etc/ld.so.conf.d/oracle.conf
任何想法或建议如何解决?
编辑:我尝试在 RStudio 控制台中设置这些环境变量,但没有解决方案
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")
现在的错误是:
Error in .oci.Driver(.oci.drv(), interruptible = interruptible,
unicode_as_utf8 = unicode_as_utf8, : ORA-12715: invalid character
set specified
错误变化由ORACLE_HOME env
的设置触发
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
如标题所示,我正在尝试使用 Unix 机器上的 ROracle 库通过 R 设置与 Oracle 数据库的连接。 在命令行中使用 R 我有 0 个问题,但是当在 RStudio Server 中尝试完全相同的指令时,我遇到了以下错误。
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
这些是 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"
我设置了以下路径:
并按照其他 Whosebug answear
中的建议将 LD 设置为共享 oracle.conf 文件echo "/oracle/app/oracle/product/12.2.0/client/lib" | sudo tee /etc/ld.so.conf.d/oracle.conf
任何想法或建议如何解决?
编辑:我尝试在 RStudio 控制台中设置这些环境变量,但没有解决方案
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")
现在的错误是:
Error in .oci.Driver(.oci.drv(), interruptible = interruptible, unicode_as_utf8 = unicode_as_utf8, : ORA-12715: invalid character set specified
错误变化由ORACLE_HOME env
的设置触发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