Я разработал блестящее приложение, используя данные из базы данных Oracle, мое приложение разработано и работает без проблем в моей среде Windows. Чтобы развернуть мое приложение в моих колледжах, я написал его как пакет и установил эти пакеты на сервере Ubuntu.
Ubuntu 18.04.2 LTS (GNU / Linux 4.15.0-50-generic x86_64)
Блестящий сервер установлен и находит пакет, приложение работает.
Но когда я пытаюсь создать соединение с oracle, мое приложение отключается и просит меня перезагрузить сеанс.
Итак, я извлек только код для создания соединения и включил несколько сообщений, и он зависает при использовании dbconnet из пакета RJDBC.
Я проверил несколько переменных среды, таких как PATH, JAVA_HOME, LD_LIBRARY_PATH. У меня нет опыта работы с Linux.
My R Version
Версия R 3.6.0 (2019-04-26) - «Посадка дерева»
Copyright (C) 2019 Фонд статистических вычислений R
Платформа: x86_64-pc-linux-gnu (64-разрядная версия)
Java-версия
openjdk версия "11.0.3" 2019-04-16
Среда выполнения OpenJDK (сборка 11.0.3 + 7-Ubuntu-1ubuntu218.04.1)
64-битная серверная виртуальная машина OpenJDK (сборка 11.0.3 + 7-Ubuntu-1ubuntu218.04.1, смешанный режим, совместное использование)
База данных Oracle
Oracle Database 11g Enterprise Edition, выпуск 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)
Таким образом, после ожидания в течение примерно 30 секунд появляется это сообщение об ошибке.
Error in .jcall("java/sql/DriverManager", "Ljava/sql/Connection;", "getConnection", :
ignoring SIGPIPE signal
Почему соединение не может быть построено, какие-либо предложения?