LoginSignup
3
2

Docker で Oracle DB を利用する

Last updated at Posted at 2024-04-17

手元で 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 を作成します。

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
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2