-
Что такое Oracle Database?
-
Зачем нужно подключаться к базе данных Oracle?
-
Способ 1. Подключение к Oracle с помощью SQL*Plus
-
Способ 2. Подключение к Oracle с помощью Python
-
Способ 3. Подключение к базе данных Oracle через SQL Developer
-
Защитите данные с помощью корпоративного решения Vinchin
-
Часто задаваемые вопросы о подключении к Oracle
-
Заключение
Подключение к базе данных Oracle является одним из основных навыков ИТ-администратора и разработчика. Для выполнения запросов, разработки приложений и управления резервным копированием нужен надежный доступ к данным. В этом руководстве рассматриваются основы Oracle Database и ее архитектуры, задачи, для которых требуется подключение, и три способа доступа: SQL*Plus, Python с драйвером oracledb и графический интерфейс SQL Developer.
Что такое Oracle Database?
Oracle Database представляет собой реляционную систему управления базами данных, которую используют организации по всему миру. Она хранит данные в таблицах, поддерживает сложные SQL-запросы и блоки PL/SQL, а также предоставляет возможности обеспечения безопасности, масштабирования, высокой доступности и производительности. Надежная обработка транзакций делает Oracle востребованной, в частности, в финансовой сфере и здравоохранении.
Краткий обзор архитектуры Oracle
Перед подключением к Oracle полезно разобраться в нескольких основных понятиях:
Экземпляр и база данных. Экземпляр состоит из структур памяти, включая SGA, и фоновых процессов, которые управляют доступом к данным. База данных включает физические файлы, в которых хранятся данные.
Мультитенантная архитектура. Контейнерная база данных CDB может содержать несколько подключаемых баз данных PDB. Каждая PDB представляет собой отдельную логическую среду, при этом ресурсы экземпляра используются совместно.
Основные файлы. К важным компонентам относятся серверный файл параметров SPFILE, управляющие файлы, журналы повторного выполнения и файлы данных. Они участвуют в запуске, работе и восстановлении базы.
Эти понятия помогут правильно выбрать параметры подключения, особенно если в инфраструктуре одновременно используются идентификаторы экземпляров SID и имена сервисов для CDB и PDB.
Зачем нужно подключаться к базе данных Oracle?
Подключение позволяет работать с данными и выполнять повседневные административные задачи. ИТ-администраторам доступ к Oracle требуется в следующих случаях:
Резервное копирование и проверка состояния базы. Перед резервным копированием и восстановлением администраторы могут проверять состояние базы через системные представления, например V$DATABASE, и выполнять операции с помощью Oracle Recovery Manager (RMAN).
Мониторинг производительности. Динамические представления, такие как V$SESSION, помогают отслеживать активные сеансы и выявлять причины замедления работы.
Автоматизация. Подключение необходимо для настройки и контроля заданий DBMS_SCHEDULER.
Управление пользователями и безопасностью. Для создания пользователей и назначения ролей требуется аутентифицированный сеанс с соответствующими полномочиями. Учетным записям следует выдавать только необходимые права.
Аудит и проверка прав доступа. Администраторы анализируют назначенные роли, в том числе через представление DBA_ROLE_PRIVS. Для доступа к административным представлениям нужны дополнительные права.
Несколько способов подключения упрощают работу в разных ситуациях: SQL*Plus удобен для командной строки и сценариев, SQL Developer позволяет просматривать объекты через графический интерфейс, а Python подходит для автоматизации и интеграции с приложениями.
Способ 1. Подключение к Oracle с помощью SQL*Plus
SQL*Plus является классическим инструментом командной строки Oracle. Он доступен в составе программного обеспечения Oracle Database и клиентских пакетов; для отдельной рабочей станции можно использовать соответствующий пакет SQL*Plus вместе с необходимыми компонентами Oracle Instant Client. Инструмент поддерживает интерактивную работу и выполнение сценариев.
Перед началом убедитесь, что SQL*Plus установлен, и подготовьте следующие сведения:
Имя пользователя и пароль базы данных.
Для удаленного подключения: имя или IP-адрес сервера, порт, обычно 1521, и имя сервиса. Если используется подключение по SID, уточните у администратора соответствующие параметры.
Сетевой доступ к серверу и работающую службу Oracle Net Listener, обслуживающую нужный сервис базы данных.
Порядок подключения через SQL*Plus:
1. Откройте командную строку Windows или терминал Linux.
2. Запустите SQL*Plus:
sqlplus
3. В приглашении User name введите имя пользователя. Для удаленной базы можно указать имя пользователя вместе с идентификатором подключения, как показано ниже.
4. В приглашении Password введите пароль. При вводе он не отображается.
Для удаленной базы удобнее сразу передать имя пользователя и строку Easy Connect. Пароль не включайте в команду: SQL*Plus запросит его отдельно.
sqlplus username@"hostname:port/service_name"
Пример подключения пользователя hr к сервису XEPDB1:
sqlplus hr@"dbserver.example.com:1521/XEPDB1"
Замените имя пользователя, адрес сервера, порт и имя сервиса параметрами своей среды. Пользователь hr и таблица employees относятся к демонстрационной схеме HR, которая может отсутствовать или быть заблокирована в вашей базе.
При успешном подключении появится приглашение SQL>. Если схема HR доступна, можно выполнить запрос:
SELECT * FROM employees;
Для простой проверки подключения без зависимости от демонстрационной схемы используйте:
SELECT SYSDATE FROM dual;
Чтобы завершить сеанс, выполните:
EXIT
В Linux настройка окружения зависит от способа установки клиента. Для полного Oracle Client обычно задают ORACLE_HOME и добавляют каталог bin в PATH. Для Instant Client следуйте инструкции соответствующего пакета: не следует автоматически задавать ORACLE_HOME по аналогии с полной установкой.
Идентификаторы подключения: SID и имя сервиса
При работе с командной строкой и настройке приложений важно различать два понятия:
SID (System Identifier). Идентификатор конкретного экземпляра Oracle. Он встречается, например, в настройках локального подключения и в дескрипторах подключения к некоторым существующим средам.
Имя сервиса (Service Name). Имя службы базы данных, через которую клиент получает доступ к нужной базе или PDB. Для подключения к PDB обычно используют именно ее сервис.
В показанном формате Easy Connect после косой черты указывается имя сервиса, а не SID. Если значения неизвестны, запросите их у администратора базы данных.
Упрощение подключения с помощью tnsnames.ora
Чтобы не вводить длинную строку подключения каждый раз, можно создать псевдоним в локальном файле tnsnames.ora. В полной клиентской установке он обычно находится в каталоге ORACLE_HOME/network/admin. Каталог конфигурации также можно задать переменной TNS_ADMIN.
Пример записи:
hr_alias = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver.example.com)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = XEPDB1) ) )
После сохранения записи подключитесь по псевдониму. Пароль будет запрошен отдельно:
sqlplus hr@hr_alias
Псевдоним упрощает перенос сценариев между средами: параметры сервера можно менять в tnsnames.ora, не редактируя каждую команду подключения.
Способ 2. Подключение к Oracle с помощью Python
Python подходит как для небольших административных сценариев, так и для полноценных приложений. Для подключения к Oracle используйте официальный драйвер python-oracledb, который поддерживает Oracle. В Python пакет импортируется под именем oracledb.
Установка драйвера
Установите пакет в выбранное окружение Python:
python -m pip install oracledb
В старых руководствах может упоминаться cx_Oracle. Драйвер python-oracledb является его преемником, а не пакетом, в который cx_Oracle был объединен «начиная с версии 8». При переносе существующего приложения проверьте рекомендации по миграции и совместимость используемых функций.
Режимы Thin и Thick
Thin. Режим по умолчанию, не требующий библиотек Oracle Client. Он поддерживает подключение к Oracle Database 12.1 и более поздним версиям; совместимость конкретной версии драйвера следует проверять по документации.
Thick. Использует установленные библиотеки Oracle Client, например Instant Client. Он нужен для определенных дополнительных возможностей и некоторых более старых версий базы. Перед созданием подключений необходимо инициализировать клиент вызовом oracledb.init_oracle_client().
Для следующих примеров используется Thin: отдельная установка Instant Client не требуется.
Подключение в режиме Thin без Instant Client
В следующем примере пароль вводится интерактивно, а подключение и курсор автоматически закрываются после выхода из блоков with:
import getpass
import oracledb
password = getpass.getpass("Пароль Oracle: ")
with oracledb.connect(
user="hr",
password=password,
dsn="dbserver.example.com:1521/XEPDB1"
) as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT SYSDATE FROM dual")
print(cursor.fetchone())Укажите существующего пользователя и параметры своего сервиса. Если подключение успешно, программа выведет дату и время сервера базы данных. Для обращения к прикладным таблицам учетной записи понадобятся соответствующие права.
Безопасная работа с учетными данными
Не записывайте пароли непосредственно в исходный код. Для автоматизации учетные данные можно передавать через заранее настроенные переменные окружения или корпоративное хранилище секретов. Следующий пример предполагает, что переменные ORACLE_USER и ORACLE_PASS уже заданы в окружении процесса:
import os
import oracledb
with oracledb.connect(
user=os.environ["ORACLE_USER"],
password=os.environ["ORACLE_PASS"],
dsn="dbserver.example.com:1521/XEPDB1"
) as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT SYSDATE FROM dual")
print(cursor.fetchone())Ограничивайте доступ к среде выполнения и не выводите секреты в журналы. Если обязательная переменная отсутствует, этот пример завершится с ошибкой, а не попытается подключиться с неполными учетными данными.
Пул подключений и рекомендации по использованию
В приложениях, которые часто обращаются к базе, пул позволяет повторно использовать соединения вместо постоянного создания новых. Ниже приведен самостоятельный пример с пулом от двух до пяти подключений:
import os
import oracledb
pool = oracledb.create_pool(
user=os.environ["ORACLE_USER"],
password=os.environ["ORACLE_PASS"],
dsn="dbserver.example.com:1521/XEPDB1",
min=2,
max=5,
increment=1
)
try:
with pool.acquire() as connection:
with connection.cursor() as cursor:
cursor.execute("SELECT SYSDATE FROM dual")
print(cursor.fetchone())
finally:
pool.close()При выходе из блока with соединение возвращается в пул. В рабочем приложении пул обычно создают при запуске и закрывают при завершении работы; показанный пример закрывает его после одной операции. Размер пула следует выбирать с учетом нагрузки и ресурсов сервера.
Способ 3. Подключение к базе данных Oracle через SQL Developer
Oracle SQL Developer предоставляет графический интерфейс для просмотра схем, работы с таблицами и представлениями, а также выполнения SQL-запросов. Далее рассматривается настольное приложение SQL Developer; названия элементов могут немного различаться в зависимости от версии и языка интерфейса.
1. Запустите SQL Developer в Windows, Linux или macOS.
2. В панели Connections нажмите значок плюса или выберите New Connection для создания нового подключения.
3. Заполните основные поля:
Connection Name: произвольное название, например HR_PDB.
Username: имя пользователя базы, например hr.
Password: пароль этой учетной записи.
4. В поле Connection Type выберите Basic. Затем укажите параметры сервера:
Hostname: имя или IP-адрес сервера, например dbserver.example.com.
Port: порт службы прослушивания, обычно 1521.
Service Name: выберите этот вариант и введите имя сервиса, например XEPDB1. Не подставляйте имя сервиса в поле SID.
5. Нажмите Test. Если в поле состояния отображается Success, нажмите Connect. Подключение появится в панели Connections, после чего можно просматривать объекты и выполнять запросы.
Для завершения сеанса щелкните подключение правой кнопкой мыши и выберите Disconnect. Перед отключением завершите необходимые операции с данными.
Подключение к подключаемой базе данных PDB
Для подключения к PDB используйте сервис, который обслуживает именно эту PDB. Его имя часто совпадает с именем базы, например XEPDB1 или SALES_PDB, но это не обязательное правило. Уточните у администратора точное имя сервиса и убедитесь, что выбран нужный контейнер, прежде чем изменять данные или настройки.
Дополнительные параметры подключения
В корпоративных средах доступ к базе может предоставляться через промежуточный сервер или зашифрованное соединение. Конкретные параметры следует согласовать с администратором инфраструктуры.
Пример SSH-туннеля
Если прямой доступ к порту базы закрыт, но разрешен SSH-доступ через промежуточный сервер, можно настроить локальную переадресацию порта:
ssh -N -L 127.0.0.1:1522:dbserver.internal.net:1521 sshuser@jumpbox.company.net
Замените имя SSH-пользователя и адреса фактическими значениями. В SQL Developer укажите Hostname: 127.0.0.1, Port: 1522 и обычное имя сервиса Oracle. Пока SSH-сеанс открыт, обращения к локальному порту перенаправляются к серверу базы через промежуточный узел.
SSH шифрует участок между вашим компьютером и промежуточным сервером. Сам по себе такой туннель не обеспечивает шифрование оставшегося участка до базы данных.
Шифрование соединений с помощью TLS
Для защищенного соединения непосредственно с сервером Oracle можно использовать протокол TCPS. Потребуются соответствующие настройки службы прослушивания, доверия к сертификатам и, в зависимости от среды, Oracle Wallet. Получите у администратора параметры подключения и необходимые сертификаты, а не заменяйте TCP на TCPS без предварительной настройки.
Защитите данные с помощью корпоративного решения Vinchin
Безопасное подключение является лишь частью защиты данных. Для восстановления после сбоев, случайных изменений и других инцидентов необходимо регулярно создавать и проверять резервные копии базы данных.
Vinchin Backup & Recovery представляет собой корпоративное решение для защиты виртуальных сред и распространенных баз данных, включая Oracle, MySQL, SQL Server, MariaDB, PostgreSQL и Postgres Pro.
Vinchin предоставляет возможности облачного резервного копирования и архивирования на ленту. В зависимости от защищаемой платформы поддерживаются полные и инкрементные копии, резервное копирование журналов, в том числе архивных журналов Oracle, запуск по расписанию, сжатие и дедупликация. Доступны различные варианты восстановления баз данных, включая восстановление на другой сервер и на определенный момент времени там, где это поддерживается. Возможности защиты от программ-вымогателей дополняют резервное копирование. Для поддерживаемых виртуальных сред предусмотрено мгновенное восстановление виртуальных машин; его следует отличать от восстановления самой базы данных.
Веб-консоль упрощает настройку резервного копирования Oracle. Основной процесс состоит из четырех шагов:
1. Выберите базу данных Oracle для резервного копирования.

2. Выберите хранилище резервных копий.

3. Настройте стратегию резервного копирования.

4. Проверьте параметры и отправьте задание.

Попробуйте Vinchin Backup & Recovery с бесплатной полнофункциональной пробной версией на 60 дней. Нажмите кнопку ниже, чтобы скачать установочный пакет и оценить возможности защиты данных.
Часто задаваемые вопросы о подключении к Oracle
1. Что делать при ошибке ORA-12514?
Ошибка означает, что служба прослушивания не знает указанный сервис. Проверьте имя сервиса в строке подключения, состояние базы или PDB и регистрацию сервиса в нужном listener. Администратор может проверить список зарегистрированных сервисов следующей командой на сервере:
lsnrctl services
Если используется нестандартное имя listener, администратору нужно указать его при проверке. Простая проверка того, что процесс listener запущен, не подтверждает наличие нужного сервиса.
2. Можно ли подключиться без установки полного Oracle Client?
Да. Python с python-oracledb в режиме Thin не требует библиотек Oracle Client. Для SQL*Plus можно использовать соответствующие пакеты Instant Client вместо полной клиентской установки. Выбор зависит от версии базы и необходимых функций.
3. Как подключиться в Linux с аутентификацией операционной системы?
Для локального административного подключения используйте разрешенную учетную запись ОС с членством в соответствующей группе OSDBA и правильно настроенным окружением Oracle, включая ORACLE_SID нужного экземпляра. Затем выполните:
sqlplus / as sysdba
Обычно такая возможность есть у настроенной учетной записи владельца Oracle, но одного имени oracle недостаточно. Это подключение с высокими административными полномочиями, а не обычный способ доступа приложения к базе.
4. Чем отличается подключение к PDB?
В строке подключения укажите сервис нужной PDB, а не сервис корневого контейнера CDB. Не предполагайте, что имя сервиса обязательно совпадает с именем PDB: подтвердите точное значение у администратора.
Заключение
Подключение к базе данных Oracle необходимо для управления, анализа и защиты данных. SQL*Plus удобен для командной строки и сценариев, Python помогает автоматизировать задачи, а SQL Developer предоставляет наглядный графический интерфейс. Выбирайте способ под свою задачу, проверяйте имя сервиса и права учетной записи, защищайте учетные данные и сетевой трафик. Дополните безопасный доступ регулярным резервным копированием с помощью Vinchin, чтобы сохранить возможность восстановления критически важных данных.