Официальный репозиторий находится здесь
Изображение “Oracle Database XE Release 21c” можно получить так:
docker pull
container-registry.oracle.com/database/express:latest
1. Создал каталог c:\my\docker\oracle-xe21
2. В каталоге создал файл docker-compose.yml
со следующим содержанием:
services:
oracle:
image: container-registry.oracle.com/database/express:21.3.0-xe
container_name: oracle-xe21
ports:
- 1521:1521
volumes:
- .:/opt/oracle/oradata
environment:
ORACLE_PWD: oracle
В файле указаны параметры для БД:
image
– образ
container_name
– имя контейнера
ports
– маппинг портов
volumes
– маппинг тома. Здесь указано, что текущий каталог, откуда производится запуск контейнера, будет являться каталогом для контейнера с БД Oracle. Если не указать маппирование тома, контейнер при запуске будет всякий раз создавать базу заново. Таким образом, все изменения в базе, произведенные после запуска контейнера, не сохранятся. Если же маппинг указан, изменения сохраняются.
environment: ORACLE_PWD
– пароль для sys и system.
3. Создал файл !up.cmd для запуска контейнера БД Oracle.
docker compose up -d
4. Создал файл !down.cmd для остановки контейнера БД Oracle.
docker compose down
5. Запустил контейнер вызовом файла !up.cmd
После запуска, стек контейнеров виден в Docker Desktop
После того, как контейнер с БД Oracle запущен, можно подключиться к БД с помощью SQL Developer
Можно подключиться к БД Oracle с помощью sqlplus, расположенной в контейнере.
1. Нужно определить container_id
docker ps
2. Подключиться к контейнеру, указав container_id, определённый на предыдущем шаге
docker exec -it 5f986add5429 //bin/bash
3. В оболочке набрать sqlplus, затем ввести логин (system) и пароль (oracle). Такой пароль был указан в файле docker-compose.yml
, с помощью которого производился запуск контейнера с БД oracle environment: ORACLE_PWD
4. Для выхода из sqlplus нужно указать exit.
5. Для выхода из shell-оболочки нужно указать exit.
После того, как первый раз был запущен контейнер с БД Oracle, создаётся база и в каталоге будут созданы две папки со следующими файлами.
Файл tnsnames.ora содержит следующее:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
LISTENER_XE =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
XEPDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 0.0.0.0)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XEPDB1)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
Sample Schemas – это схемы, содержащие объекты для примеров из документации Oracle. Вот – инструкции того, как нужно устанавливать Sample Schemas.
1. Архив находится на GitHub: https://github.com/oracle/db-sample-schemas/releases/latest
2. Нужно скачать архив, разархивировать (например в папку demo)
3. В скриптах *.sql и файлах *.dat необходимо произвести замену: вместо токена __SUB__CWD__
следует указать правильный путь для скрипта (/opt/oracle/oradata/demo
)
4. запустить скрипт для установки
@/opt/oracle/oradata/demo/mksample systempw syspw hrpw oepw pmpw ixpw shpw bipw users temp /your/path/to/log/ connect_string
У скрипта используются такие параметры:
systempw
– пароль для схемы system
(в данном случае – это oracle)
syspw
– пароль для схемы sys
(в данном случае – это тоже oracle)
hrpw
– пароль для схемы hr
(я использовал hr)
oepw
– пароль для схемы oe
(oe)
pmpw
– пароль для схемы pm
(pm)
ixpw
– пароль для схемы ix
(ix)
shpw
– пароль для схемы sh
(sh)
bipw
– пароль для схемы bi
(bi)
users
– default tablespace (users)
temp
– temporary tablespace (temp)
/your/path/to/log/
– каталог для логов (/opt/oracle/oradata/demo/log), предварительно нужно создать этот каталог
connect_string
– строка коннекта в БД (я использовал XEPDB1)
После запуска скрипта, будут созданы схемы (в контейнере XEPDB1)
Для подключения к схеме HR необходимо использовать такие параметры:
Результат: