概要
実務で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で確認した図
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」フォルダを作成します。
dockerコンテナ起動
docker-compose up -d
初回起動時は、データベースを構築する時間がかかります。
自分の環境では7分ほどかかりました。
構築終了時のログ
コンテナ内の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で接続する。
サービス名についての調べ方
# 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