Ubuntu18.04 RJDBC:与oracle的JDBC连接未挂起响应

Ubuntu18.04 RJDBC:与oracle的JDBC连接未挂起响应,r,ubuntu,jdbc,dbconnection,rjdbc,R,Ubuntu,Jdbc,Dbconnection,Rjdbc,我使用oracle数据库中的数据开发了一个闪亮的应用程序,我的应用程序在windows环境中开发并顺利运行。为了在我的大学里部署我的应用程序,我将它作为一个包编写,并将这个包安装在ubuntu服务器上。 Ubuntu 18.04.2 LTS(GNU/Linux 4.15.0-50-generic x86_64) Shining server已安装并正在查找包,应用程序正在运行 但当我尝试创建与oracle的连接时,我的应用程序会断开连接,并要求我重新加载会话 因此,我只提取了构建连接的代码,并包

我使用oracle数据库中的数据开发了一个闪亮的应用程序,我的应用程序在windows环境中开发并顺利运行。为了在我的大学里部署我的应用程序,我将它作为一个包编写,并将这个包安装在ubuntu服务器上。 Ubuntu 18.04.2 LTS(GNU/Linux 4.15.0-50-generic x86_64) Shining server已安装并正在查找包,应用程序正在运行

但当我尝试创建与oracle的连接时,我的应用程序会断开连接,并要求我重新加载会话

因此,我只提取了构建连接的代码,并包含了几条消息,当使用RJDBC包中的dbconnet时,它会挂起

我检查了几个环境变量,如PATH、JAVA\u HOME、LD\u LIBRARY\u PATH。我几乎没有使用linux的经验

我的R版本 R版本3.6.0(2019-04-26)-“植树” 版权所有(C)2019统计计算基础 平台:x86_64-pc-linux-gnu(64位)

Java版本 openjdk版本“11.0.3”2019-04-16 OpenJDK运行时环境(构建11.0.3+7-Ubuntu-1ubuntu218.04.1) OpenJDK 64位服务器虚拟机(构建11.0.3+7-Ubuntu-1ubuntu218.04.1,混合模式,共享)

Oracle数据库 Oracle数据库11g企业版11.2.0.2.0版-64位生产

我正在使用驱动程序ojdbc7.jar,因为它似乎是最新版本

    library(rJava)
    library(DBI)
    library(RJDBC)

    options(java.parameters="-Xmx2g")
    .jinit()
    print(.jcall("java/lang/System", "S", "getProperty", "java.version"))

    initialize_db_con <- function(driverClass = 'oracle.jdbc.driver.OracleDriver',
                          classPath = "pathtomyfile/ojdbc7.jar",
                          dbn = 'jdbc:oracle:thin:@xx.xx.xx.xx:xxxx/mydb',
                          usr = NULL, pwd = NULL) {
      driverClass <- 'oracle.jdbc.driver.OracleDriver'
      message("Setting user and password manually")

      creds <- list(user = usr, pw = pwd)


      drv <- RJDBC::JDBC(driverClass = driverClass, classPath = classPath, identifier.quote = '´')
      message("driver is set")
      con <- RJDBC::dbConnect(drv = drv, dbn, creds$user, creds$pw)
      message("connection has been build")
      return(con)
    }


    usr <- "myuser"
    pwd <- "mypassword"

    con <- initialize_db_con(usr=usr, pwd = pwd)

为什么不能建立连接,有什么建议吗?

对于每个有类似问题的人,我想发布我的解决方案。 仅为root用户设置了环境变量,但没有为所有其他用户设置环境变量,包括来自shiny app的用户

这一页对理解ubuntu与oracle的连接过程也很有帮助

对于每个有类似问题的人,我想发布我的解决方案。 仅为root用户设置了环境变量,但没有为所有其他用户设置环境变量,包括来自shiny app的用户

这一页对理解ubuntu与oracle的连接过程也很有帮助

我知道这是一个老问题,问这个问题的用户很久以前就离开了,但为了防止有人遇到同样的问题,我会发布我的解决方案:我通过添加以下行解决了这个问题:

options(java.parameters="-Djava.security.egd=file:///dev/urandom")
library(rJava)
显然,由于/dev/random的阻塞特性,在Linux上使用JDBC驱动程序。tcpdump跟踪显示流量,但连接在“auth session”TNS数据包之后被卡住。strace显示进程在等待/dev/random时被锁定:

open("/dev/random", O_RDONLY)           = 22
...
read(22, 0x7ffc27416f10, 8)             = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
剩下的都是谷歌搜索


几天来,我一直被这个问题困扰着,这就是我希望发布在这里的答案,就是这样。

我知道这是一个老问题,问这个问题的用户很久以前就离开了,但为了防止有人遇到同样的问题,我会发布我的解决方案:我通过添加以下行解决了这个问题:

options(java.parameters="-Djava.security.egd=file:///dev/urandom")
library(rJava)
显然,由于/dev/random的阻塞特性,在Linux上使用JDBC驱动程序。tcpdump跟踪显示流量,但连接在“auth session”TNS数据包之后被卡住。strace显示进程在等待/dev/random时被锁定:

open("/dev/random", O_RDONLY)           = 22
...
read(22, 0x7ffc27416f10, 8)             = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
剩下的都是谷歌搜索


有几天我一直在讨论这个问题,这就是我希望在这里发布的答案,就是这样。

这个列表在不断增长,不知道它意味着什么。。。?!哦,按CTRL+C键ok,我得到了这6个数据包,6个接收到,0%的数据包丢失,时间5102ms rtt min/avg/max/mdev=0.020/0.021/0.023/0.005 msI做了一些搜索,只能找到这篇关于2012年错误的帖子:当我查看档案(2012年第4季度)时,答案似乎是“试试ROracle”。对不起,我帮不上忙了谢谢菲尔,我也找到了这个页面。但我非常确定,rJava和RJDBC必须有解决方案。我也发现了这个页面,这可能与我的问题有关吗?如果是这样的话,我该如何修复它呢?这个列表在不断增长,不知道它意味着什么。。。?!哦,按CTRL+C键ok,我得到了这6个数据包,6个接收到,0%的数据包丢失,时间5102ms rtt min/avg/max/mdev=0.020/0.021/0.023/0.005 msI做了一些搜索,只能找到这篇关于2012年错误的帖子:当我查看档案(2012年第4季度)时,答案似乎是“试试ROracle”。对不起,我帮不上忙了谢谢菲尔,我也找到了这个页面。但我非常确定,rJava和RJDBC必须有解决方案。我也发现了这个页面,这可能与我的问题有关吗?如果是的话,我该如何修复它?