Ubuntu18.04 RJDBC:与oracle的JDBC连接未挂起响应
我使用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,因为它似乎是最新版本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的连接时,我的应用程序会断开连接,并要求我重新加载会话 因此,我只提取了构建连接的代码,并包
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必须有解决方案。我也发现了这个页面,这可能与我的问题有关吗?如果是的话,我该如何修复它?