【Oracle Database 19c】Docker環境構築

Database


DockerでOracle Database 環境構築の備忘録になります。
ふとOracle Master を取得したくなり実機でコマンド確認をするためインストールすることにしました。
OracleをWindowsにインストールするとフォルダやレジストリを汚されるイメージが強いのでDockerを選択しました。

0.プロファイル作成

ファイルをダウンロードする際にログインが必要になりますので、Oracleプロファイルを作成します。
また、DatabaseがDocker Imageが公開されている訳ではないため、GitHubからダウンロードしビルドする必要があります。

1.Oracle Database 19cダウンロード

そのままインストール手順を進めるとOracle Database 23cでインストールされてしまいます。(2024/11現在)
DBA 2019勉強用でOracle Database 19c を利用したいので下記サイトから「Oracle Database 19c for Linux x86-64」のZipファイルをダウンロードします。

以下公式の手順になります。

項目内容
バージョンOracle Database 19c
ライセンスUniversal Permissive License v1.0

2.リポジトリのクローン

下記コマンドでリポジトリのクローンを作成します。

git clone https://github.com/oracle/docker-images.git

3.フォルダ配置

Oracle Database 19cのファイルを対象バージョンのフォルダに配置します。

cd docker-images/OracleDatabase/SingleInstance/dockerfiles
mv ~/Downloads/LINUX.X64_193000_db_home.zip ./19.3.0

4.イメージビルド

対象バージョンをパラメータで指定し、スクリプトを実行します。
コマンドのオプションは公式手順に記載されています。

./buildContainerImage.sh -v 19.3.0 -e

PCのスペックによりますが、「Build completed」が処理完了になります。

  Oracle Database container image for 'ee' version 19.3.0 is ready to be extended: 
    
    --> oracle/database:19.3.0-ee

  Build completed in 192 seconds.

ディスクの空き容量が足りない場合は下記メッセージが表示されます。
※イメージのビルドは18GBの空き容量が必要でした。要件を満たすためにディスク拡張をしておいてください。

——
> [base 4/4] RUN chmod ug+x /opt/install/*.sh && sync && /opt/install/checkSpace.sh && /opt/install/setupLinuxEnv.sh && rm -rf /opt/install:
0.569 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
0.569 checkSpace.sh: ERROR – There is not enough space available in the container.
0.569 checkSpace.sh: The container needs at least 18 GB, but only 10 GB are available.
0.569 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
——

ディスク拡張後、下記コマンドでDockerのキャッシュを削除し、再実行します。
docker builder prune
./buildContainerImage.sh -v 19.3.0 -e

5.イメージ確認

Oracle Database 19c がインストールされているか確認します。
docker imagesコマンドを実行します。
TAGの「ee」はライセンス「Enterprise Edition」の略になります。

[root@localhost dockerfiles]# docker images
REPOSITORY                      TAG              IMAGE ID       CREATED         SIZE
oracle/database                 19.3.0-ee        e050588c0279   6 minutes ago   6.54GB

永続ストレージ用のフォルダを作成します。

mkdir ./oradata
chmod 777 ./oradata

docker-compose.yamlを作成します。

docker-compose.yaml

version: '3'
services:
  db:
    image: oracle/database:19.3.0-ee
    container_name: oracle
    ports:
      - 1521:1521
      - 5500:5500
    ulimits:
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - ./oradata:/opt/oracle/oradata
    environment:
      - ORACLE_PWD=oracle
      - ORACLE_PDB=oracle

docker composeを起動し、ログを確認します。

docker-compose up -d
docker-compose logs

「DATABASE IS READY TO USE!」が記録されていれば成功になります。

oracle  | SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
oracle  | Version 19.3.0.0.0
oracle  | The Oracle base remains unchanged with value /opt/oracle
oracle  | #########################
oracle  | DATABASE IS READY TO USE!
oracle  | #########################

sqlplusでOracle Databaseに接続します。

[root@DockerBuild Oracle]# docker compose exec db sqlplus SYSTEM/oracle@ORCLCDB
SQL*Plus: Release 19.0.0.0.0 - Production on Fri Nov 22 23:21:22 2024
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Fri Nov 10 2024 22:59:41 +00:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>

以上でOracle Databaseの環境構築は完了になります。

最後に

業務ではネットワークのSIしかやっていないためOracle Databaseについての知識が圧倒的に足りないため、一先ずインストールしてみました。
無料できる範囲に制限があるようですが勉強する分には問題ないと思います。