2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DockerでOracle Databaseを構築

Last updated at Posted at 2025-02-05

概要

実務でOracle Databaseを触る機会が多いので、検証用DBをDocker上に構築します。

対象読者

・DockerでOracle Databaseを構築したい方

配置図

環境

名称 バージョン 説明
Windows 10 クライアントのOS
Docker -- コンテナ型仮想環境
Oracle Database 23ai Free Release 23.0.0.0.0 データベース
A5:SQL 2.20.1 SQLのGUIクライアント

手順

ダウンロード

以下ページのリポジトリをダウンロードします。
dockerイメージを作成するために使います。
https://github.com/oracle/docker-images

Docker イメージ作成

ダウンロードしたフォルダに以下ファイルがあることを確認します。
OracleDatabase/SingleInstance/dockerfiles/buildContainerImage.sh

自分は、23.3.5を選択しました。(オプションで指定します。)
実行完了するまでに5,10分かかります

# bash or wslで実行する
ls
>OracleDatabase/SingleInstance/dockerfiles

./buildContainerImage.sh -v 23.3.5 -f

イメージが作成されていることをCLIで確認

docker image ls 
REPOSITORY
                TAG           IMAGE ID       CREATED         SIZE        
oracle/database
                23.5.0-free   b3e9ab706c34   9 hours ago     4.95GB

docker desktopで確認した図

image.png

docker-compose.yml 作成

docker-compose.yml
services:
  oracle_db:
   image: oracle/database:23.5.0-free
   container_name: oracle_test_db
   shm_size: 1g # 共有メモリを1GB以上にしないとコンテナ起動時にエラーが発生します。
   environment:
     - TZ=Asia/Tokyo
     - LANGUAGE=ja_JP.ja
     - LANG=ja_JP.UTF-8
     - NLS_LANG=Japanese_Japan.AL32UTF8 # sqlplusの日本語化でこの環境変数が必要になります。
     - ORACLE_PWD=pass # パスワードは適宜指定します。
   ports:
     - 11521:1521
   volumes:
     - ./src:/opt/oracle/oradata

・データ部分はバインドマウントを使って永続化しています。
 docker-compose.ymlと同じ階層に「src」フォルダを作成します。

image.png

dockerコンテナ起動

docker-compose up -d

初回起動時は、データベースを構築する時間がかかります。
自分の環境では7分ほどかかりました。

構築開始時のログ(Docker for Desktop)
image.png

構築終了時のログ

image.png

コンテナ内のsqlplusからSQLを実行する

## sqlplusに入る
docker-compose exec -it  oracle_db bash -c "sqlplus system/pass"

## 
SQL> SELECT * FROM v$version;

## 結果
中略
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free

A5:SQLで接続する。

image.png

サービス名についての調べ方

# Docker コンテナ内に入る
docker-compose exec -it  oracle_db bash
# Docker コンテナ内で実行
echo "show parameter service;" | sqlplus system/pass
# 結果 サービス名はFREEになる
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
auto_start_pdb_services              boolean     FALSE
service_names                        string      FREE
statement_redirect_service           string
SQL> Oracle Database 23ai Free Release 23.0.

感想

以下の2点で手間どりましたね
・Docker Imageのビルド方法
・ログイン情報(サービス名が特に)

参考

github差分
https://github.com/RYA234/External_Collaboration/commit/61bcb4b0ebb5621399e4b3541c3f653458a78bdb

初期のログイン情報について sys と systemがデフォルト
https://www.prgkop.com/oracle-sys-system-login/

イメージの準備方法を参考
https://qiita.com/h-i-ist/items/a67acbce0e7c6bdebd69

docker-compose A5SQLの設定など 書き方を参考
https://qiita.com/hrk_okd/items/f098ee234b702975c4fd

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?