学校でOracleの学習をしていたら使うかもしれないhrスキーマ。
自分のマシンにOracle突っ込んで動かしっぱなしにするのもなぁ…ってことで使う時だけDockerで動かしてしまえ。っていう奴です。
環境はUbuntu 14.04.3(LTS)デスクトップ版を想定してます。
dockerのインストール
$ sudo apt install docker.io
$ sudo gpasswd -a ユーザー名 docker
ここまでやったら一度ログアウトする。(ターミナルの終了じゃ駄目)
oracle-xe-11gのインストール済イメージをpull
$ docker pull wnameless/oracle-xe-11g
一旦起動。
$ docker run -d -p 1521:1521 wnameless/oracle-xe-11g
hrスキーマを有効にする。
docker run
後すぐは起動処理が走っていてsqlplusで接続できないことがあるため、2〜3分(マシンの性能にもよるけど)が経ってから実行すること。
$ sqlplus system/oracle@localhost/xe
SQL> ALTER USER hr ACCOUNT UNLOCK;
SQL> ALTER USER hr IDENTIFIED BY hr;
SQL> exit;
外部ファイルにしておいて@で読みこんでもOK。
hrスキーマを有効にしたdockerイメージを保存
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
29bf9c0d9861 wnameless/oracle-xe-11g:latest "/bin/sh -c '/usr/sb 33 minutes ago Up 33 minutes 22/tcp, 8080/tcp, 0.0.0.0:1521->1521/tcp stupefied_perlman
のCONTAINER ID
に書かれてる文字列(ここでは29bf9c0d9861
)を次のコマンドに指定します。
$ docker commit 29bf9c0d9861 oracle-xe-11g-hr
実行後にきちんと保存されていることを確認する。
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
oracle-xe-11g-hr latest 6e2467bff3ad 7 minutes ago 3.537 GB
wnameless/oracle-xe-11g latest 0803d64ebc69 5 months ago 2.241 GB
以降使用したい時は
$ docker run -d -p 1521:1521 oracle-xe-11g-hr
で起動すること。
コンテナの停止
$ docker ps
して止めたいコンテナIDを確認して
$ docker stop コンテナID
で停止する。
hrスキーマへ接続
こちらも起動してから接続可能になるまで時間がかかるのでしばらく待つこと。
$ sqlplus hr/hr@localhost
参考サイト
あれ?
Dockerfile作ればいいのでは?と思ったけどうまくいかなかったので(