2

我们最近能够获得一个小型 redhat 服务器来试验 shiny-server。我们的 IT 部门运行了闪亮服务器并安装了 Oracle 客户端,但我无法让 ROracle 在闪亮服务器中工作。他们(IT)已经决定这是一个应用程序问题,并开始放弃......

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

当我尝试通过 shiny-server 访问同一个应用程序时,出现以下错误:

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 访问权限,所以我可以尝试的东西是有限的。在使用 Sys.setenv() 和使用 system() 加载 ROracle 之前,我尝试从我的 server.R 脚本设置 LD_LIBRARY_PATH ,但这些都不起作用。我们一直试图帮助我的 DBA 尝试在 /etc/init/shiny-server.conf 中设置 LD_LIBRARY_PATH 但这似乎也不起作用。

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

谢谢

4

4 回答 4

4

经过几天的沮丧,我找到了解决方案。您需要LD_LIBRARY_PATH在位于 /etc/init/shiny-server.conf 的 upstart 脚本中设置变量,但根据upstart 文档,您需要使用env关键字定义它。所以添加:

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

到 shiny-server.conf 脚本的开头似乎已经解决了这个问题。

于 2014-02-07T20:09:39.507 回答
3

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

于 2014-02-13T22:48:42.770 回答
1

我对 PHP 和 Apache 有同样的问题。

请参考 PHP 文档中的设置 Oracle 环境

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

于 2014-02-05T18:50:46.380 回答
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()

    })

 }
)
于 2018-03-08T15:28:48.090 回答