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;