必要に駆られてDockerで環境作成したため、手順を公開します。
以前11g環境を構築したことがあり、同じような流れで作成しています。
Dockerインストール済みの方向けの手順となっています
Docker:imageの作成
① Oracleの公式GitHubリポジトリからDockerイメージをclone
コマンドプロンプトから、以下コマンドを実行します。
git clone https://github.com/oracle/docker-images.git
② インストールイメージのダウンロード
https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html
LINUX.X64_193000_db_home.zip
をダウンロードします。
③ インストールイメージの配置
※①でクローンしたdockerイメージの以下のパスに、②を格納します。
docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
④Docker imageのビルド
コマンドプロンプトから、以下のコマンドを実行します。
cd docker-images/OracleDatabase/SingleInstance/dockerfiles
./buildContainerImage.sh -v 19.3.0 -e
※バージョンのエラーで出来ない場合は、以下コマンド。
cd docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0/
docker build -t oracle/database:19.3.0-xe .
Docker:containerの作成
① docker-compose.yml 作成
今回は、以下の内容で作成しました。
※services:の下の「19c」はコンテナ名
version: '3.7'
services:
19c:
image: oracle/database:19.3.0-ee
shm_size: 1gb
ports:
- 1521:1521
volumes:
- oracle-data:/opt/oracle/oradata
environment:
- ORACLE_SID=XXXX
- ORACLE_PWD=XXXX_PASS
volumes:
oracle-data:
コマンドプロンプトから、docker-compose.yml のある階層で以下コマンドを実行します。
docker compose up -d
手順としてはこれで完了です。
補足:volumesについて
11g環境を構築した際の手順を元に作成しましたが、以前は
一番下の「volumes」は記載していませんでした。
11g構築時のdocker-compose.yml 👇
version: '3.7'
services:
11g:
image: oracle/database:11.2.0.2-xe
shm_size: 1gb
ports:
- 1521:1521
volumes:
- ./oracle:/u01/app/oracle/oradata
environment:
- ORACLE_SID=XXXX
- ORACLE_PWD=XXXX_PASS
(ここにvolumesの記載なし)
元々この記載は、「データ永続化のためにOracleのデータをDockerの外にリンクさせている」
ようなイメージですが
この方法では権限のエラーで起動しなかったり、エラーになることが多かったため
今回の19cでは、Docker内部にvolumesを作成する方法で対応しています。
まとめ
バージョンが異なるだけですが、インストールイメージがどこにあるのか
どれなのかというのが最近のOracleのサイトからは読み取りにくく
11gの構築でもその点で苦戦しました。
今回こうして作成したものの、元々の環境と文字コードが異なるため
実際は使用出来ず、別でまた用意することになりましたが、
何か別の機会で使用出来ると良いなと思います。