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 использует сетевой прослушиватель для обработки входящих соединений. Вы можете изменить конфигурацию прослушивателя, чтобы разрешить удаленные подключения. Выполните следующие действия:
- Создайте файл с именем
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))
)
)
- Смонтируйте файл
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. Изменив этот файл, вы можете включить удаленные подключения. Выполните следующие действия:
- Создайте файл с именем
sqlnet.oraсо следующим содержимым:
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.AUTHENTICATION_SERVICES= (NTS)
TCP.VALIDNODE_CHECKING=yes
TCP.INVITED_NODES=(localhost, <your_IP_address>)
- Смонтируйте файл
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.