Post

SQL*Plus на Ubuntu: полный рабочий сетап через Oracle Instant Client

SQL*Plus на Ubuntu: полный рабочий сетап через Oracle Instant Client

SQLPlus остаeтся востребованным инструментом для администрирования Oracle Database и автозапуска SQL-скриптов в CI/CD и DevOps-пайплайнах. Несмотря на распространeнность Oracle, официальная установка SQLPlus в Linux, в частности Ubuntu, часто вызывает трудности из-за зависимостей и особенностей Oracle Instant Client.

Разберем пошагово, как установить SQL*Plus на Ubuntu 22.04 и 24.04. В примерах используется актуальная версия Instant Client 21.13.

Зачем нужен SQL*Plus

SQL*Plus — это минималистичная консольная утилита Oracle. Она полезна в сценариях:

  • Выполнение SQL- и PL/SQL-скриптов на серверах;
  • Миграции схем и данных;
  • Автоматизация через Bash и CI/CD (GitLab, Jenkins, TeamCity);
  • Отладка подключения к Oracle (проверка listener, доступности сервисов);
  • Управление пользователями и ролями;
  • Запуск инсталляционных скриптов (*.sql) в деплоях.

Если нужно подключить Oracle в инфраструктуру — SQL*Plus почти всегда нужен.

Варианты установки

В Linux есть три способа поставить SQL*Plus:

Вариант установкиОписаниеКогда использовать
Oracle Instant Client
(рекомендуется)
Официальный способ от Oracle.
Минимальный набор библиотек.
Стабильная работа в продакшене.
✅ Серверы
✅ DevOps
✅ CI/CD
Oracle SQLclСовременная альтернатива SQL*Plus.
Поддерживает историю команд, алиасы
и SQL форматирование.
Требует Java (JDK/JRE).
💡 Локальная разработка
💡 Административные задачи
PPA/форки из интернетаНеофициальные сборки SQL*Plus.
Можно найти в сторонних репозиториях.
⚠️ Риск зависимостей
⚠️ Проблемы обновлений

В этой статье используется официальный способ через Oracle Instant Client — надeжно и подходит для продакшена.

Установка Oracle Instant Client и SQL*Plus

Oracle Instant Client содержит всe, что нужно для подключения к базе: базовые сетевые библиотеки и консоль SQL*Plus. Для Ubuntu пакетов нет, поэтому ставим вручную.

Установка зависимостей

1
2
sudo apt update
sudo apt install wget unzip libaio-dev -y

libaio-dev — обязательная зависимость. Раньше использовался libaio1, но в новых версиях Ubuntu пакет переименовали.

Загрузка Instant Client

Переходим в каталог ~/Downloads и скачиваем актуальные архивы (версия 21.13):

1
2
3
4
5
6
7
cd ~/Downloads

wget https://download.oracle.com/otn_software/linux/instantclient/2113000/instantclient-basiclite-linux.x64-21.13.0.0.0dbru.zip \
     -O instantclient-basiclite.zip

wget https://download.oracle.com/otn_software/linux/instantclient/2113000/instantclient-sqlplus-linux.x64-21.13.0.0.0dbru.zip \
     -O instantclient-sqlplus.zip

Архивы можно обновить при выходе новой версии — структура ссылок у Oracle стабильная.

Распаковка и размещение

1
2
3
4
5
unzip instantclient-basiclite-linux.x64-21.13.0.0.0dbru.zip
unzip instantclient-sqlplus-linux.x64-21.13.0.0.0dbru.zip

sudo mkdir -p /opt/oracle
sudo mv instantclient_21_13 /opt/oracle/

/opt/oracle — стандартное место для системных инструментов Oracle, удобно использовать при обновлениях.

Настройка переменных окружения

Добавляем путь к библиотекам в ~/.bashrc, чтобы sqlplus запускался из любой директории:

1
2
3
echo "export LD_LIBRARY_PATH=/opt/oracle/instantclient_21_13" >> ~/.bashrc
echo "export PATH=\$PATH:/opt/oracle/instantclient_21_13" >> ~/.bashrc
source ~/.bashrc

Проверка установки

1
sqlplus -v

Если появляется следующая ошибка, значит Oracle ищет старую версию libaio:

1
2
sqlplus: error while loading shared libraries:
libaio.so.1: cannot open shared object file

Исправляем симлинком:

1
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so /usr/lib/x86_64-linux-gnu/libaio.so.1

Проверяем снова:

1
2
3
4
sqlplus -v

SQL*Plus: Release 21.0.0.0.0 - Production
Version 21.13.0.0.0

SQL*Plus установлен и готов к работе.

Подключение к базе данных

SQL*Plus поддерживает подключение по протоколу Oracle Net (TCP). Проще всего подключаться в формате EZConnect, без tnsnames.ora:

1
sqlplus USER/PASS@//HOSTNAME:1521/SERVICE_NAME

Пример:

1
sqlplus scott/tiger@//192.168.1.10:1521/ORCLCDB

Если требуется указать кодировку клиента (например, UTF-8), указываем переменную NLS_LANG:

1
NLS_LANG=.AL32UTF8 sqlplus scott/tiger@//db.example.com:1521/ORCLCDB

Выполнение SQL-скриптов

SQL*Plus часто используют для автоматизированного выполнения SQL-скриптов и деплоя схем. Есть два основных режима работы: обычный и пакетный (без интерактивности).

Выполнение одного скрипта

Если скрипт лежит в корне:

1
sqlplus user/pass@//host:1521/service @script.sql

Для подкаталога:

1
sqlplus user/pass@//host:1521/service @scripts/init_schema.sql

Пакетный режим (для CI/CD)

Пакетный режим позволяет передавать сразу несколько команд:

1
2
3
4
5
sqlplus -s user/pass@//host:1521/service <<EOF
@schema/init.sql
@schema/data.sql
EXIT;
EOF

Ключ -s отключает лишние SQL*Plus сообщения, что удобно для CI-логов.

Выполнение SQL из pipeline

Пример выполнения SQL прямо из shell-команды (например, GitLab CI):

1
echo "SELECT sysdate FROM dual;" | sqlplus -s user/pass@//host:1521/service

Завершение сессии

Важно завершать сеанс sqlplus, иначе CI job может «залипнуть», ожидая ввода:

1
EXIT;
This post is licensed under CC BY 4.0 by the author.