I have been experiencing issues with an R script hanging when connecting to an Oracle database. To help debug, I found a function here in the nabble forum and made a small test script: #!/usr/bin/Rscript --no-restore --no-save --no-init-file library("RJDBC") drv<-JDBC("oracle.jdbc.OracleDriver","/home/oracle/lib/ojdbc6.jar", "'") dbCheck = function(url, user='', pwd='') { j = .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", "getConnection", url, user, pwd, check=FALSE) x = .jgetEx() .jcheck() x } dbCheck("jdbc:oracle:thin:@192.168.3.10:1521:psrndpt1","myuser","mypass") When I run the file - sometimes it works, returning NULL, and sometimes it hangs for between 1 and 2.5 minutes before throwing an error. The database is new and stable, on the same network - with no connection issues from any other clients. This machine isn't currently doing anything else except for running this script. Output from running it several times looks like this: R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava NULL R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava NULL R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava NULL R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava NULL R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava NULL R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava NULL R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava Error in .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", "getConnection", : ignoring SIGPIPE signal Calls: dbCheck -> .jcall -> .External Execution halted R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava Error in .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", "getConnection", : ignoring SIGPIPE signal Calls: dbCheck -> .jcall -> .External Execution halted R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava NULL R at ss-dev:~/scripts$ ./dbCheck.R Loading required package: methods Loading required package: DBI Loading required package: rJava Error in .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", "getConnection", : ignoring SIGPIPE signal Calls: dbCheck -> .jcall -> .External Execution halted The times that it returns NULL, it returns immediately. When it throws the error, it is a varying amount of time between roughly 1 and 2.5 minutes. Both machines are not busy at all. Any ideas would greatly appreciated. Thanks. -- View this message in context: http://r.789695.n4.nabble.com/Intermittent-connectivity-issues-for-JDBC-Oracle-tp4644960.html Sent from the R help mailing list archive at Nabble.com.
R. Michael Weylandt
2012-Oct-04 10:20 UTC
[R] Intermittent connectivity issues for JDBC / Oracle
On Thu, Oct 4, 2012 at 4:29 AM, dh_ss <david at serendipityscience.com> wrote:> I have been experiencing issues with an R script hanging when connecting to > an Oracle database. To help debug, I found a function here in the nabble > forum and made a small test script: > > #!/usr/bin/Rscript --no-restore --no-save --no-init-file > library("RJDBC") > drv<-JDBC("oracle.jdbc.OracleDriver","/home/oracle/lib/ojdbc6.jar", "'") > > dbCheck = function(url, user='', pwd='') { > j = .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", > "getConnection", url, user, pwd, check=FALSE) > x = .jgetEx() > .jcheck() > x > } > dbCheck("jdbc:oracle:thin:@192.168.3.10:1521:psrndpt1","myuser","mypass") > > > When I run the file - sometimes it works, returning NULL, and sometimes it > hangs for between 1 and 2.5 minutes before throwing an error. The database > is new and stable, on the same network - with no connection issues from any > other clients. This machine isn't currently doing anything else except for > running this script. Output from running it several times looks like this: > > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > NULL > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > NULL > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > NULL > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > NULL > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > NULL > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > NULL > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > Error in .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", > "getConnection", : > ignoring SIGPIPE signal > Calls: dbCheck -> .jcall -> .External > Execution halted > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > Error in .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", > "getConnection", : > ignoring SIGPIPE signal > Calls: dbCheck -> .jcall -> .External > Execution halted > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > NULL > R at ss-dev:~/scripts$ ./dbCheck.R > Loading required package: methods > Loading required package: DBI > Loading required package: rJava > Error in .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", > "getConnection", : > ignoring SIGPIPE signal > Calls: dbCheck -> .jcall -> .External > Execution halted > > > The times that it returns NULL, it returns immediately. When it throws the > error, it is a varying amount of time between roughly 1 and 2.5 minutes. > Both machines are not busy at all. > > Any ideas would greatly appreciated. Thanks. >I'd suggest you take this to the R-SIG-DB (Databases) mailing list instead. I don't think it's mirrored on the abomination that is Nabble, so you'll have to subscribe and post there: https://stat.ethz.ch/mailman/listinfo/r-sig-db Note that they'll most certainly want your OS, rJava version, JVM version, R version, and relevant info about the Oracle DB as well. Cheers, Michael