Oracle SQLDeveloper “нет ocijdbc12 в пути java.library.path”

Вопрос или проблема

Я пытаюсь заставить Oracle SQL Developer работать на 16.04. Я следовал ответу PhatHV на этот вопрос, и десктопное приложение открывается нормально и выглядит правильно, но когда я пытаюсь подключиться к базе данных (и я знаю, что это должно работать, потому что я подключался к той же базе данных в Windows), появляется окно с ошибкой, в котором написано

При выполнении запрашиваемой операции возникла ошибка:

no ocijdbc12 in java.library.path

Код поставщика 0

Кто-нибудь знает, что вызывает эту ошибку и как её исправить?

Для меня это работает только тогда, когда я устанавливаю переменную окружения LD_LIBRARY_PATH на директорию Instant Client, делая это в /etc/ld.so.conf.d/oracle.conf и выполняя sudo ldconfig, но не работает.

Хорошо, мне удалось (с некоторой помощью) исправить эту проблему на двух разных компьютерах, но прошло достаточно времени, что я не помню всего, что мы сделали, чтобы исправить это. Я включу по крайней мере то, что помню, и, возможно, позже дополню этот ответ. Я не понимаю всего, что происходит за кулисами, поэтому прошу прощения, если там есть ненужные шаги. Однако, как я упоминал в исходном вопросе, я следовал другому ответу, данному PhatHV, и не буду повторять здесь шаги, найденные там. Предполагается, что вы следовали его руководству, прежде чем приходить сюда.

Установите Oracle Instant Client

Для версии SQL Developer 4.2.0 мне нужно было получить версию 12.2.0.1.0 Instant Client. Вы можете найти загрузку здесь. Выберите “Instant Client для Linux”, который соответствует вашей архитектуре (у меня 64-битная машина, поэтому я выбрал опцию x86-64). Скачайте следующие 5 файлов (заменяя номер версии и архитектуру, где это необходимо):

  • oracle-instantclient12.2-basic-12.2.0.1.0-1.x86-64.rpm
  • oracle-instantclient12.2-devel-12.2.0.1.0-1.x86-64.rpm
  • oracle-instantclient12.2-jdbc-12.2.0.1.0-1.x86-64.rpm
  • oracle-instantclient12.2-odbc-12.2.0.1.0-1.x86-64.rpm
  • oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86-64.rpm

Если у вас его еще нет, вам нужно будет установить инструмент под названием alien:

sudo apt-get install alien

Перейдите в вашу директорию Загрузок (или куда бы вы ни сохранили файлы) и выполните sudo alien -i для каждого файла, чтобы установить его. Мы используем alien, потому что он сначала преобразует их в .deb перед установкой. Обратите внимание, что alien не генерирует много вывода сразу, поэтому может показаться, что он ничего не делает, но я обещаю, что это не так.

sudo alien -i oracle-instantclient12.2-basic-12.2.0.1.0-1.x86-64.rpm
sudo alien -i oracle-instantclient12.2-devel-12.2.0.1.0-1.x86-64.rpm
sudo alien -i oracle-instantclient12.2-jdbc-12.2.0.1.0-1.x86-64.rpm
sudo alien -i oracle-instantclient12.2-odbc-12.2.0.1.0-1.x86-64.rpm
sudo alien -i oracle-instantclient12.2-sqlplus-12.2.0.1.0-1.x86-64.rpm

Редактирование профиля и переменных окружения

Для всех этих команд вам нужно быть пользователем root. Выполните sudo su, чтобы войти как root.

Отредактируйте /etc/profile.d/oracle.sh, чтобы он содержал следующее:

export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export TNS_ADMIN=/usr/lib/oracle/ora
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

Обратите внимание на номер версии в переменной ORACLE_HOME. У меня это 12.2, но у вас это может быть что-то другое. Также нормально установить TNS_ADMIN=$ORACLE_HOME/ora, но я не стал этого делать, чтобы мои .ora файлы не находились в каталоге, зависящем от версии (например, 12.2).

Отредактируйте /etc/ld.so.conf.d/oracle.conf, чтобы он содержал

/usr/lib/oracle/12.2/client64/lib/

Снова обратите внимание на номер версии.

Наконец, в /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
JAVA_HOME="/usr/lib/jvm/default-java/"
CLASSPATH=/usr/lib/jvm/default-java/lib:/usr/lib/jvm/default-java/include:/usr/lib/oracle/12.2/client64/lib

После того как вы закончите редактировать все эти файлы, выполните

ldconfig
source /etc/profile.d/oracle.sh
source /etc/environment

Нажмите <Ctrl> + D или введите exit, чтобы вернуться к обычному пользователю.

Добавить в качестве стороннего драйвера

Я не знаю, является ли этот шаг строго необходимым, но он работает на моем компьютере. Если вы откроете SQL Developer, вы можете перейти в Инструменты -> Настройки -> База данных -> Сторонние драйверы JDBC и нажать Добавить запись. Откройте /usr/lib/oracle/12.2/client64 и нажмите на lib. Он выделит его, и затем вы можете нажать выбрать, чтобы добавить его в список.

После этого шага вам нужно будет закрыть и снова открыть SQL Developer. Как только вы всё это сделали, надеюсь, ошибок больше не будет.

Ответ или решение

Ошибка "no ocijdbc12 in java.library.path" в Oracle SQL Developer: Полное руководство по устранению

Если вы столкнулись с ошибкой "no ocijdbc12 in java.library.path" при попытке подключения к базе данных через Oracle SQL Developer на Ubuntu 16.04, не отчаивайтесь. Эта проблема часто возникает из-за неправильной конфигурации пути к библиотекам Oracle Instant Client. В данной статье мы подробно рассмотрим, что вызывает данную ошибку и шаги, необходимые для её устранения.

Причины возникновения ошибки

Ошибка указывает на то, что Java не может найти динамическую библиотеку ocijdbc12. Это происходит, когда переменная окружения java.library.path не содержит пути, в котором размещена библиотека. Обычно это связано с неправильной установкой Oracle Instant Client или пропущенной конфигурацией переменных среды.

Шаги для решения проблемы

  1. Установка Oracle Instant Client

    Для SQL Developer 4.2.0 вам потребуется скачать Oracle Instant Client версии 12.2.0.1.0. Это можно сделать на официальном сайте Oracle. Вам нужно будет выбрать подходящие RPM файлы для вашей архитектуры (в данном случае x86-64).

    Не забудьте загрузить следующие компоненты:

    • oracle-instantclient12.2-basic
    • oracle-instantclient12.2-devel
    • oracle-instantclient12.2-jdbc
    • oracle-instantclient12.2-odbc
    • oracle-instantclient12.2-sqlplus

    Если у вас не установлен alien, выполните:

    sudo apt-get install alien

    Затем конвертируйте и установите каждый RPM файл с помощью команды:

    sudo alien -i имя_файла.rpm
  2. Настройка переменных среды

    После установки необходимо настроить переменные среды. Для этого выполните следующие действия, войдя в систему как root:

    sudo su
    • Откройте файл /etc/profile.d/oracle.sh и добавьте следующие строки:

      export ORACLE_HOME=/usr/lib/oracle/12.2/client64
      export TNS_ADMIN=/usr/lib/oracle/ora
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
    • Убедитесь, что вы создали файл /etc/ld.so.conf.d/oracle.conf, где указали:

      /usr/lib/oracle/12.2/client64/lib/
    • Наконец, отредактируйте файл /etc/environment, добавив:

      PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
      JAVA_HOME="/usr/lib/jvm/default-java/"
      CLASSPATH=/usr/lib/jvm/default-java/lib:/usr/lib/jvm/default-java/include:/usr/lib/oracle/12.2/client64/lib
  3. Обновление конфигураций

    После редактирования всех файлов выполните:

    ldconfig
    source /etc/profile.d/oracle.sh
    source /etc/environment

    После этого можно выйти из режима root командой exit.

  4. Добавление драйвера в SQL Developer

    Откройте SQL Developer и пройдите в меню:

    Tools -> Preferences -> Database -> Third Party JDBC Drivers

    Нажмите "Добавить запись", выберите директорию /usr/lib/oracle/12.2/client64/lib и добавьте её в список.

  5. Перезапустите SQL Developer

    После внесённых изменений обязательно закройте и снова откройте SQL Developer, чтобы изменения вступили в силу.

Заключение

Следуя данным шагам, вы сможете устранить ошибку "no ocijdbc12 in java.library.path" и успешно подключиться к вашей базе данных через Oracle SQL Developer на Ubuntu. Если проблема не исчезает, убедитесь в правильности установленных путей и конфигураций. Наличие всех необходимых библиотек и правильно настроенные переменные среды — ключ к успешной работе с Oracle SQL Developer.

Оцените материал
Добавить комментарий

Капча загружается...