今日はなにの日。

気になったこと勉強になったことのメモ。

今日は、DockerでOracle 21cの学習環境を作るの日。

目次

とある日

Oracleの環境がほしい。

なので、Dockerで作れないかと探したらあったので作った話。

構築手順

結論を言うと下記の記事通りにやるとできます。

DockerでOracle動かしたついでに、公式サンプルデータを突っ込んでから、ER図を自動生成してみようぜ

簡潔にまとめると以下の手順でできます。

ちなみに元記事のOracle19.3でしたが自分は21.3でやりましたが特に手順の差はなかったです。

  1. Oracle DockerImageダウンロード
  2. OracleDBダウンロード
  3. イメージの作成
  4. 初期データ配置
  5. docker-composeで起動

全体を通してダウンロード時間をとか考慮すると1時間ぐらいでできました。

注意事項としてはストレージを30GBぐらい消費したのである程度容量を確保したほうが良いです。

あと、OSがOracle Linuxでできることがかなり制限されてます。

具体的に言うとviとかyumが実行できない。

前提条件

  • Windows環境
  • WSL2 環境構築済み
  • Oracleアカウント取得済み
  • Docker環境構築済み

途中スクリプトファイルを実行する時があるのですが、その際Windowsだと実行するのに別ツールがいるのでWSL2のUbuntuの環境で実行しました。

躓いたところ

OracleDBダウンロードZipは解凍しない

癖で解凍しましたが、どうやらzipのまま使うらしいです。

解凍して配置するとzipがないと怒られました。

他のコンテナンは停止

元記事でも記載があるのですが、docker-composeで起動するとCPUやメモリをかなり食います。

自分の環境は他のコンテナも起動していたのでフルでリソースを使えない状態だったので起動の際に時間がかかりました。

なので、あらかじめ他のコンテナを停止をおすすめします。

Sqlplusログイン

久しぶりすぎて色々と手間取りました。

docker-compose exec db sqlplus sys/oracle123@ORCLPDB1 as sysdba

Docker-composeから直接ログインするなら上記のコマンドでOKです。

接続手順

docker-composeディレクトリ移動しないとできないのが不便。

スクリプトでまとめてます。

cd %homepath%\Documents\GitHub\Docker\Docker-compose\Oracle\
docker-compose up -d
docker-compose exec db sqlplus sys/oracle123@ORCLPDB1 as sysdba

↓実行

C:xxx>cmd /c "c:xxx\Docker\Docker-compose\Oracle\dockerexec.bat"

C:xxx>cd xxx\Docker\Docker-compose\Oracle\

C:xxx\Docker\Docker-compose\Oracle>docker-compose up -d
[+] Running 1/0
 - Container oracle  Running                                                                        0.0s 

C:xxx\Docker\Docker-compose\Oracle>docker-compose exec db sqlplus sys/oracle123@ORCLPDB1 as sysdba

SQL*Plus: Release 21.0.0.0.0 - Production on Mon Jan 3 06:48:13 2022
Version 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle.  All rights reserved.


Connected to:
Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0

SQL> 

Enterprise Manager Database Express

https://localhost:5500/em/

上記にログインすればEnterprise Manager Database Expressに接続できます。

今後この環境使って試験勉強を考えてます。

VirtualBoxでやったときは地獄だったけどDockerだとすごく楽にできる。