- Вопрос или проблема
- Установите Oracle Instant Client
- Редактирование профиля и переменных окружения
- Добавить в качестве стороннего драйвера
- Ответ или решение
- Ошибка "no ocijdbc12 in java.library.path" в Oracle SQL Developer: Полное руководство по устранению
- Причины возникновения ошибки
- Шаги для решения проблемы
- Заключение
Вопрос или проблема
Я пытаюсь заставить 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 или пропущенной конфигурацией переменных среды.
Шаги для решения проблемы
-
Установка 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
-
Настройка переменных среды
После установки необходимо настроить переменные среды. Для этого выполните следующие действия, войдя в систему как 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
-
-
Обновление конфигураций
После редактирования всех файлов выполните:
ldconfig source /etc/profile.d/oracle.sh source /etc/environment
После этого можно выйти из режима root командой
exit
. -
Добавление драйвера в SQL Developer
Откройте SQL Developer и пройдите в меню:
Tools -> Preferences -> Database -> Third Party JDBC Drivers
Нажмите "Добавить запись", выберите директорию
/usr/lib/oracle/12.2/client64/lib
и добавьте её в список. -
Перезапустите SQL Developer
После внесённых изменений обязательно закройте и снова откройте SQL Developer, чтобы изменения вступили в силу.
Заключение
Следуя данным шагам, вы сможете устранить ошибку "no ocijdbc12 in java.library.path" и успешно подключиться к вашей базе данных через Oracle SQL Developer на Ubuntu. Если проблема не исчезает, убедитесь в правильности установленных путей и конфигураций. Наличие всех необходимых библиотек и правильно настроенные переменные среды — ключ к успешной работе с Oracle SQL Developer.