Написано: 12.01.2023

Docker и Oracle-Xe 21c.

Oracle Container Registry

Официальный репозиторий находится здесь

Изображение “Oracle Database XE Release 21c” можно получить так:

docker pull
container-registry.oracle.com/database/express:latest

Запуск контейнера с БД Oracle XE 21c

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

docker_oracle

Подключение к БД Oracle с помощью SQL Developer

После того, как контейнер с БД Oracle запущен, можно подключиться к БД с помощью SQL Developer

docker_sqldev

Подключение к БД Oracle с помощью sqlplus

Можно подключиться к БД Oracle с помощью sqlplus, расположенной в контейнере.

1. Нужно определить container_id

docker ps

oracle_containerid

2. Подключиться к контейнеру, указав container_id, определённый на предыдущем шаге

docker exec -it 5f986add5429 //bin/bash

docker_exec

3. В оболочке набрать sqlplus, затем ввести логин (system) и пароль (oracle). Такой пароль был указан в файле docker-compose.yml, с помощью которого производился запуск контейнера с БД oracle environment: ORACLE_PWD

docker_sqlplus

4. Для выхода из sqlplus нужно указать exit.

5. Для выхода из shell-оболочки нужно указать exit.

docker_sqlplus

Файлы БД Oracle

После того, как первый раз был запущен контейнер с БД Oracle, создаётся база и в каталоге будут созданы две папки со следующими файлами.

ora_files

Файл 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)
     )
  )

Установка БД Oracle Sample Schemas

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

У скрипта используются такие параметры:

  1. systempw – пароль для схемы system (в данном случае – это oracle)

  2. syspw – пароль для схемы sys (в данном случае – это тоже oracle)

  3. hrpw – пароль для схемы hr (я использовал hr)

  4. oepw – пароль для схемы oe (oe)

  5. pmpw – пароль для схемы pm (pm)

  6. ixpw – пароль для схемы ix (ix)

  7. shpw – пароль для схемы sh (sh)

  8. bipw – пароль для схемы bi (bi)

  9. users – default tablespace (users)

  10. temp – temporary tablespace (temp)

  11. /your/path/to/log/ – каталог для логов (/opt/oracle/oradata/demo/log), предварительно нужно создать этот каталог

  12. connect_string – строка коннекта в БД (я использовал XEPDB1)

После запуска скрипта, будут созданы схемы (в контейнере XEPDB1)

Подключение к HR через SQL Developer

Для подключения к схеме HR необходимо использовать такие параметры:

oracle_hr

Результат:

ora_hr_tables