2014-02-05 92 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

您可以添加一些解釋如何解決這個問題? –

相關問題