oracle
docker
Sqlplus

OS X 10.11で,Oracle Database 12cのDocker Imageを使ってみた

More than 1 year has passed since last update.


この記事はなに?

Dockerでアプリケーションのローカル開発環境を構築するにあたって,「Oracle DBのDocker Containerって使えないのかなぁ」と思ったら,公式が用意してくれていたので試してみました.

他にも,「Oracle試してみたいけど環境構築面倒…」という人にも使えるかと思います(Dockerならイメージの配布も簡単なので).


注意点


  • Dockerの導入方法については記載しません.


  • このインストール方法はOracle社ページのブログをもとにしていますが,Oracle社としてはこの方法でのインストールのサポートはしていないみたいです. 追記(2017/05/02): 公式にリリースされたとのPress Releaseがありました.https://www.oracle.com/corporate/pressrelease/docker-oracle-041917.html


参考記事

基本的に下記記事をなぞったただけです.


環境

Mac OS X 10.11.6

Docker 1.12.1 (Docker for Mac)


手順

コンテナを起動するまでの手順として,大きく分けて,


  • Dockerfile(とビルド用スクリプト)をGithubから入手

  • Oracle DBのバイナリを入手

  • ビルドしてイメージを作成

  • イメージからコンテナを起動

の4段階のプロセスがある.

加えて,DBにCLIから接続するために,SQL*Plusを導入し,実際にDBにログインするところまでを扱う.


Oracle公式のDockerfileを導入

cd /path/to/src/directory

git clone https://github.com/oracle/docker-images.git

cd docker-images/OracleDatabase

https://github.com/oracle/docker-images/tree/master/OracleDatabase

↑に,具体的にどうやってビルドすればいいか書いてある.

11.2.0.2と,12.1.0.2の2バージョンに対応しているらしい.


Oracle DBのバイナリを入手

開発者向けにOracle Databaseを入手するためには,事前にOTN開発者ライセンスの入手(無償)が必要.

規約をよく読んでから入手.

その後,製品のダウンロードページへ行く.

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

今回入手したいのは,Oracle Database 12c Release 1 (12.1.0.2.0) - Enterprise Edition.

参考記事とは異なり,使用している端末のOSがOS Xなので少し悩んだが,コンテナ自体はLinuxなので(Dockerだから当たり前か),"Linux x86-64"のリンクから,"linuxamd64_12102_database_1of2.zip","linuxamd64_12102_database_2of2.zip"の両方を入手.


ビルドしてイメージを入手

cd docker-images/OracleDatabase/dockerfiles

mv /path/to/binary/linuxamd64_12102_database_{1,2}of2.zip 12.1.0.2/

./buildDockerImage.sh -v 12.1.0.2 -e -i

1点,参考記事とは異なり,OS Xではデフォルトでmd5sumコマンドが用意されておらず,iオプションをつけてMD5チェックサムの確認をしないようにする必要があることに注意.

しばらく待つとイメージがインストールされる.

docker images

で.

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

oracle/database 12.1.0.2-ee e63a79a35266 2 hours ago 11.48 GB

のように表示されれば,無事イメージがビルドされている.


イメージからコンテナを起動

sudo docker run -p 1521:1521 --name gvenzl oracle/database:12.1.0.2-ee

実行後,しばらく待つと,

#########################

DATABASE IS READY TO USE!
#########################

のような文言が表示される.

これで,コンテナ(ここでは"gvenzl"という名前にしている)上のDBが起動し,Dockerホスト上から1521番ポートで見える状態になっているらしい(この後もスクリプトが終了しないのだが,問題ないのかは不明…).

また,

ORACLE AUTO GENERATED PASSWORD FOR SYS, SYSTEM AND PDBAMIN

という文言の後に,systemユーザ用のパスワードが表示される.

これを変更したい場合は,コンテナ起動後,

cd docker-images/OracleDatabase/dockerfiles/12.1.0.2

PASS=<your password> # 参考記事中では,"LetsDocker"と設定している
sudo docker exec gvenzl ./setPassword.sh ${PASS}

とする.


SQL*Plusを導入

http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

上記ページからOS X向けのクライアントとSQL*Plusを入手.

instantclient-basic-macos.x64-12.1.0.2.0.zip

instantclient-sqlplus-macos.x64-12.1.0.2.0.zip

両方のZIPファイルを展開し,ディレクトリに入っているすべてのファイルを,同一のディレクトリ中に入れる.

このディレクトリを

ls -ld ~/src/instantclient_12_1

とした場合,

export ORACLE_HOME=~/src

export SQLPATH=$ORACLE_HOME/instantclient_12_1/

export PATH="$SQLPATH:$PATH"

のように環境変数を設定する(この設定は.bash_profileなどに記述するとよい).


Oracle DBにログイン

sqlplus system/<your password>@//localhost:1521/ORCLPDB1

無事ログインできれば,コンソールが表示される.

select table_name, tablespace_name, status from user_tables;

このSQLで現在のテーブル一覧とステータスが表示されればOK.