2014-02-05 48 views
2

我们最近得到了一个小型的红帽服务器来试验闪亮服务器。我们的IT部门运行着闪亮的服务器并安装了Oracle客户端,但我无法使ROracle在闪亮的服务器上工作。他们(IT)已经决定它是一个应用程序问题,并且正在开始放弃...用闪亮服务器上的ROracle连接到Oracle数据库

最初,ROracle根本无法在服务器上工作,但我们通过将LD_LIBRARY_PATH设置为在我的用户帐户中工作我的.bashrc文件。完成后,我可以登录服务器,并从R查询数据库。我甚至可以使用runApp()从R运行我的闪亮应用程序。

当我尝试通过闪亮服务器访问同一个应用程序时,以下错误:

Listening on port 40679 
Loading required package: DBI 
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
    unable to load shared object '/usr/lib64/R/library/ROracle/libs/ROracle.so': 
    libclntsh.so.11.1: cannot open shared object file: No such file or directory 
Error : package or namespace load failed for 'ROracle' 
Error : package or namespace load failed for 'ROracle' 

这是我让我的帐户之前,我设置了LD_LIBRARY_PATH变量相同的错误。服务器以用户闪亮的方式运行,但显然不会运行任何启动脚本,因此修复了我的用户的问题将无法修复闪亮的用户。这一切都远远超出我的知识领域,正如我所说的,我们的IT部门表示他们没有想法。

我没有sudo访问服务器,所以我可以尝试的东西是有限的。我尝试从我的server.R脚本中设置LD_LIBRARY_PATH,然后使用sys.setenv()加载ROracle并使用system(),但这些都不起作用。我们一直试图帮助我的DBA尝试在/etc/init/shiny-server.conf中设置LD_LIBRARY_PATH,但这看起来并不奏效。

我真的很希望这里的某个人有一些想法。

谢谢

+0

你在shiny-server conf中使用了哪种语法?导出LD_LIBRARY_PATH =?或者只是LD_LIBRARY_PATH =? – codeblur

回答

4

经过几天令人沮丧的日子,我找到了解决方案。您需要在位于/etc/init/shiny-server.conf的upstart脚本中设置LD_LIBRARY_PATH变量,但根据upstart documentation,您需要使用env关键字来定义它。因此,补充说:

env LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:$LD_LIBRARY_PATH

的光泽,为server.conf脚本的开头似乎已经解决了这一问题。

1

我有和PHP和Apache一样的问题。

请参阅PHP文档中的Setting the Oracle Environment

此外,请参阅注释 - 您在/etc/init/shiny-server.conf中使用了哪种语法?

+0

谢谢!我将看看PHP文档。为了回答你的其他问题,它看起来像她将'export LD_LIBRARY_PATH =/usr/lib/oracle/11.2/client64/lib:$ LD_LIBRARY_PATH'添加到shiny-server.conf。 – Eric

3

这是我的博客文章(大约一岁),详细描述了如何让R Studio与Oracle一起工作。 LD_LIBRARY_PATH,OCI Lib和所有的东西都提供。也许这可以帮助别人:http://learnfrominfo.tumblr.com/post/38382388429/connect-r-studio-server-to-an-oracle-database-with

+0

此方法适用于使用vRODBC连接到Vertica数据库。我在目录'/ etc/profile.d /'中添加了'shinyserver.sh'文件,内容为'export LD_LIBRARY_PATH =/usr/lib'。按照其他答案中的建议将此添加到/etc/init/shiny-server.conf文件中不起作用。 – JohnSG

0
SERVER.R 
library 
library(RMySQL) 
library(caTools) 
library(rpart) 
library(RJDBC) 
shinyServer(

    function(input ,output) 
    { 
    dvr =JDBC("oracle.jdbc.OracleDriver",classPath="D:/ojdbc6.jar") 

url = "" 
user = "" 
password = "" 
jd =dbConnect(dvr,url, user, password) 
a1 <- eventReactive(input$predict, 
        { 
         a<-input$ref 
         table2<-data.frame(dbGetQuery(jd,paste0(" 
           select colnames from Tablename where REFNO=",a," and ROWNUM<15 
                "))) 
         print(table2) 
         print(bs<-table2) 

        } 

) 




output$dis<-renderTable({ 
    a1() 

    }) 

} 
) 
+1

您可以添加一些解释如何解决这个问题? –