如何在Windows 7 64位上安装ROracle

时间:2013-11-21 18:06:46

标签: r

这是How to install ROracle package on Windows 7?

的后续内容

我在尝试构建ROracle时出现以下错误

  

**测试是否可以加载已安装的软件包   
inDL(x,as.logical(local),as.logical(now),...)出错:   无法加载共享对象'D:/Users/a101/Documents/R/win-library/3.0/ROracle/libs/x64/ROracle.dll':   LoadLibrary失败:%1不是有效的Win32应用程序。

我安装了RTools和64位Oracle Instantclient
我从Admin privieledged命令行执行以下命令:

  

设置OCI_LIB64 = C:/ Oracle / instantclient_12_1_x64   
设置OCI_INC = C:/ Oracle / instantclient_12_1_x64 / sdk / include   
“C:/ Program Files / R / R-3.0.0 / bin / x64 / R”CMD INSTALL - 建立ROracle_1.1-10.tar.gz

我一直在搜索,我发现这个错误是由混合模式构建引起的。即具有64位Oracle客户端库的32位R,反之亦然。我已经看了很多(很多)小时,我相信我正在使用所有64位(OS,R,Oracle客户端库)。所有跟踪消息似乎都指示64位。

关于我可能遗失的任何想法?

3 个答案:

答案 0 :(得分:1)

要运行依赖步行,请使用Dependecy Walker,在此应用中选择打开ROracle.dll。我有同样的问题,因为ROracle.dll正在搜索OCI x64(Oracle客户端),而我的PC上安装了x86版本。

答案 1 :(得分:0)

我遇到了同样的问题,64位窗口和R ... 因为我在几天之前将ROracle从32位转移到了64位。更改OCI_LIB64,OCI_INC并将64位即时客户端dir添加到env变量Path后,它在R和RStudio中工作正常。

但我之前设置了一个任务调度程序,使用Rscript.exe每天运行一个RCode。自从具有相同错误的转换后该任务失败:“inDL(x,as.logical(local),as.logical(now),...)中的错误:无法加载共享对象'E:/ app / R_lib / 3.4 / ROracle / libs / x64 / ROracle.dll':LoadLibrary失败:%1不是有效的Win32应用程序。“

我的最终解决方案是重新启动计算机...并且任务调度程序再次工作....猜测应该暂时存储一些32位文件,并且在使用64位ROracle之前需要删除...

答案 2 :(得分:0)

您需要将Oracle Client 32位和64位witk SDK文件夹目录添加到Windows System环境变量路径。还需要安装rjava包(安装Java 64位)并在R sys.setenv()中设置JAVA_HOME。

install.packages("rJava")       #Install Java 64 bits
library(rJava)                  #Not Errors

Sys.setenv("OCI_LIB64"="C:/instantclient_12_2_64bits")
Sys.setenv("OCI_LIB32" = "C:/instantclient_12_2_64bits")
Sys.setenv("ORACLE_HOME" = "C:/instantclient_12_2_64bits")

Sys.setenv(JAVA_HOME='C:/Program Files/Java/jre1.8.0_241')

install.packages(paste0(path,"/ROracle_1.3-1.tar.gz"), repos = NULL, type = "source")
library(ROracle)

安装过程中的最后一条消息应该已完成!

在Windows系统环境路径中:

C:\instantclient_12_2_64bits;
C:\instantclient_12_2_64bits\sdk;
C:\instantclient_12_2_32bits;
C:\instantclient_12_2_32bits\sdk;

希望这行得通!