手元で Oracle SQL の実行結果を確認するため、Docker で構築した際の手順です。
手順
大まかな流れは Oracle Database Software のダウンロード → image のビルド → 起動 です。
1. Oracle Database Software をダウンロード
下記ページから “Oracle Database XXc for Linux x86-64” をダウンロードします。
ファイルサイズが大きいのでそこそこ時間がかかります。
2. 公式のリポジトリをクローン
下記リポジトリをクローンしてきます。
3. ダウンロードしたファイルを配置
イメージのビルド時に必要なので 1. でダウンロードしたファイルを配置します。
配置場所は OracleDatabase/SingleInstance/dockerfiles/[バージョン番号]
です。
ファイル名を変更したり解凍したりはしないでください。
4. image のビルド
下記コマンドを実行することで image がビルドされます。
私の環境では 15 分ほどかかりました。
$ cd OracleDatabase/SingleInstance/dockerfiles
$ ./buildDockerImage.sh -v バージョン番号 -e -i
バージョン番号は x.y.z の形なので、指定する値は ./buildContainerImage.sh -h
で確認してください。
例として 19c の場合は ./buildDockerImage.sh -v 19.3.0 -e -i
となります。
$ ./buildContainerImage.sh -h
Usage: buildContainerImage.sh -v [version] -t [image_name:tag] [-e | -s | -x | -f] [-i] [-p] [-b] [-o] [container build option]
Builds a container image for Oracle Database.
Parameters:
-v: version to build
Choose one of: 11.2.0.2 12.1.0.2 12.2.0.1 18.3.0 18.4.0 19.3.0 21.3.0 23.3.0
5. データ永続化用にディレクトリを作成
次の手順で作成する docker-compose.yaml と同じ場所に oradata ディレクトリを作成します。
ついでにホスト側との SQL ファイルの共有をやりやすくするために sql ディレクトリも作成しておきます。
mkdir ./oradata ./sql
6. 起動用の docker-compose.yaml を用意
5 で用意したディレクトリのある場所に下記内容で docker-compose.yaml を作成します。
services:
db:
image: oracle/database:[tag]
container_name: oracledb
ports:
- 1521:1521
- 5500:5500
volumes:
- ./oradata/:/opt/oracle/oradata
- ./sql/:/home/oracle/sql
environment:
- ORACLE_PWD=Oracle19
- ORACLE_PDB=oracle
image: oracle/database:[tag]
の [tag]
部分は 4 で作成した image のタグ名に合わせてください。
以下の場合は image: oracle/database:19.3.0-ee
となります。
$ docker images | grep oracle
oracle/database 19.3.0-ee 31797cafc386 52 minutes ago 6.54GB
7. コンテナの起動
docker compose up でコンテナを起動します。
#########################
DATABASE IS READY TO USE!
#########################
というメッセージが表示されれば DB の準備完了です。
初回起動時はそこそこ時間がかかります(私の環境では20分程度かかりました)。
8. コンテナ内で SQL Plus を利用して SQL を実行する
下記コマンドでコンテナに入り、SQL Plus で繋ぎます。
$ docker compose exec db bash
$ sqlplus SYSTEM/${ORACLE_PWD}@${ORACLE_PDB}
SQL ファイルを実行する場合は sql ディレクトリに配置し、SQL Plus で @sql/[sqlファイル名] を実行することでその SQL ファイルを実行できます。
$ ls ./sql
select.sql
$ sqlplus SYSTEM/${ORACLE_PWD}@${ORACLE_PDB}
SQL> @sql/select.sql