Включение удаленных подключений в Oracle XE с помощью Docker Compose: подробное руководство

Oracle XE — это популярная облегченная версия базы данных Oracle, которая часто используется в целях разработки и тестирования. При запуске Oracle XE в контейнере Docker с помощью Docker Compose вы можете столкнуться с необходимостью включить удаленные подключения к базе данных, позволяя клиентам, находящимся за пределами контейнера, получать доступ к базе данных. В этой статье мы рассмотрим несколько способов добиться этого, а также приведем примеры кода.

Метод 1: предоставление доступа к порту
Самый простой подход — предоставить доступ к порту Oracle XE в файле Docker Compose. По умолчанию контейнер Oracle XE прослушивает порт 1521. Добавьте следующую строку в файл docker-compose.ymlв разделе services:

services:
  oracle-xe:
    ...
    ports:
      - "1521:1521"
    ...

Метод 2: настройка сетевого прослушивателя Oracle
Oracle XE использует сетевой прослушиватель для обработки входящих соединений. Вы можете изменить конфигурацию прослушивателя, чтобы разрешить удаленные подключения. Выполните следующие действия:

  1. Создайте файл с именем listener.oraсо следующим содержимым:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = XE)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
    )
  )
  1. Смонтируйте файл listener.oraв контейнер Oracle XE, добавив в файл docker-compose.ymlследующую строку:
services:
  oracle-xe:
    ...
    volumes:
      - ./listener.ora:/u01/app/oracle/product/11.2.0/xe/network/admin/listener.ora
    ...

Метод 3: изменение файла SQLNET.ORA
Файл sqlnet.oraсодержит параметры конфигурации Oracle Net Services. Изменив этот файл, вы можете включить удаленные подключения. Выполните следующие действия:

  1. Создайте файл с именем sqlnet.oraсо следующим содержимым:
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.AUTHENTICATION_SERVICES= (NTS)
TCP.VALIDNODE_CHECKING=yes
TCP.INVITED_NODES=(localhost, <your_IP_address>)
  1. Смонтируйте файл sqlnet.oraв контейнер Oracle XE, добавив в файл docker-compose.ymlследующую строку:
services:
  oracle-xe:
    ...
    volumes:
      - ./sqlnet.ora:/u01/app/oracle/product/11.2.0/xe/network/admin/sqlnet.ora
    ...

Включение удаленных подключений в Oracle XE, работающем с Docker Compose, необходимо для доступа к базе данных извне контейнера. В этой статье мы рассмотрели три метода достижения этой цели: раскрытие порта, настройка сетевого прослушивателя Oracle и изменение файла SQLNET.ORA. Выберите метод, который соответствует вашим требованиям, и следуйте предоставленным примерам кода, чтобы включить удаленные подключения в вашей среде Oracle XE Docker.