Ubuntu 18.04 RJDBC: соединение JDBC с оракулом не отвечает - PullRequest
1 голос
/ 12 июня 2019

Я разработал блестящее приложение, используя данные из базы данных 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

Почему соединение не может быть построено, какие-либо предложения?

1 Ответ

0 голосов
/ 19 июня 2019

Для всех с подобной проблемой, я хочу опубликовать свое решение.Переменные окружения были установлены только для пользователя root, но не для всех других пользователей, включая пользователя из bright-app.

https://askubuntu.com/questions/866161/setting-path-variable-in-etc-environment-vs-profile

Также очень полезно понять процесс подключенияУбунту к оракулу была эта страница https://edstevensdba.wordpress.com/2011/02/09/sqlnet_overview/

...