#はじめに
先日、自社の社内勉強会で
「dockerはとにかく軽い!」
「構築が簡単!」
と聞いてから、dockerを使いたくてウズウズしていたので、
docker上にOracleDBを構築してみた。
ので、速攻で構築できる方法を記事にしたいと思う。
#dockerインストール
公式サイトからDocker for Macをダウンロードする。
ダウンロードしてきた「Docker.dmg」を開き、
Applicationsに追加。
インストーラーにしたがって、
インストール(画像撮り忘れた。。。)
すると、メニューバーにこいつが出てくる。
こいつをクリックすると、
dockerが起動しているのがわかる。
これで、dockerにOracleを乗せる準備完了。
正しくインストールされているのか、確認する方法として
もう一つ、ターミナルで、
$ docker info
を入力してdockerのバージョンとか表示されれば、
正しくインストールされている。
(dockerコマンドが使えるようになっていることの確認)
#Oracle on docker
ここからは@lethe2211さんのQiita記事を参考に、
docker上にOracleDBを構築する。
@lethe2211さんの記事↓
https://qiita.com/lethe2211/items/0bb493fa93a0088cfac9
@lethe2211さんの記事から引用。
コンテナを起動するまでの手順として,大きく分けて,
・Dockerfile(とビルド用スクリプト)をGithubから入手
・Oracle DBのバイナリを入手
・ビルドしてイメージを作成
・イメージからコンテナを起動
の4段階のプロセスがある.
この手順通りにやったら出来た。
(@lethe2211さん、ありがとうございます!)
ので、以下手順を書いていく。
##Oracle公式のDockerfileを導入
@lethe2211さんにならって
任意の場所にDockerfileを落としてくるディレクトリ構築。
ターミナルで「mkdir」コマンドを使って下記階層を作ろう。
/path/to/src/directory
そして移動、
$ cd /path/to/src/directory
GithubからこのディレクトリにDockerfileを落としてくる。
$ git clone https://github.com/oracle/docker-images.git
gitが入ってない人はgitコマンドが使えないので、下記のURLからgitを入れてね。
https://git-scm.com/
(gitの入れ方は割愛させていただきます。)
下記コマンドを使うと、
$ ls
docker-images
っていうディレクトリが出来てて、Dockerfileがダウンロードされたのが分かる。
##Oracle DBのバイナリを入手
バイナリ入手には、ライセンスが必要。
ライセンスの取得方法は
@lethe2211さんの記事が大変参考になる
ので、いっぱい引用させていただきやす。
開発者向けにOracle Databaseを入手するためには,事前にOTN開発者ライセンスの入手(無償)が必要.
規約をよく読んでから入手.
・OTN Developer License Terms - Oracle
http://www.oracle.com/technetwork/jp/licenses/standard-license-152015.html
・自分用Oracle DBを「無償で」作ろう!「OTN開発者ライセンス」
https://blogs.oracle.com/oracle4engineer/entry/oracle_>db_-otn_developer_license
その後,製品のダウンロードページへ行く.
http://www.oracle.com/technetwork/database/enterprise->edition/downloads/index.html
ライセンスを作ったら、上記引用文の製品ダウンロードページで、最新版(この記事記載時点ではver12.2.0.1.0)をダウンロードしよう。
##ビルドしてイメージを入手
カレントディレクトリが、
/path/to/src/directory
の状態から、
$ cd /docker-images/OracleDatabase/SingleInstance
へ移動。
「ls」コマンドを使うと、
「12.2.0.1」というディレクトリと、
「buildDockerImage.sh」というファイル
があるはず。
まず先程ダウンロードしたOracleDBのバイナリ(linuxx64_12201_database.zip)を、
「12.2.0.1」というディレクトリに移動させる。
$ mv /Users/{ユーザー}/Downloads/linuxx64_12201_database.zip /path/to/src/directory/docker-images/OracleDatabase/SingleInstance/dockerfiles/12.2.0.1
「./ファイル名」で「buildDockerImage.sh」を実行し、バイナリをビルドして
dockerイメージを入手する。
./buildDockerImage.sh -v 12.2.0.1 -e -i
オプションの「-v」は、Oracleのバージョンを指定。
オプションの「-e」は、Oracle Databaseのエディションを「Enterprise Edition(EE)」に指定。
オプション「-i」は、
OS Xではデフォルトでmd5sumコマンドが用意されておらず,iオプションをつけてMD5チェックサムの確認をしないようにする
ために必要らしい。(-iを付けないとビルドが上手くいかない)
しばらく待つとイメージがインストールされる。
インストールが完了したら、
$ docker images
を入力し、
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 12.2.0.1-ee 09c2c4113ded 4 weeks ago 13.3GB
上記の様に表示されていれば、イメージのビルドが成功している。
##イメージからコンテナを形成
docker runコマンドでコンテナを形成。
docker run --name docker_oracle -p 1521:1521 oracle/database:12.2.0.1-ee
オプション「--name」でコンテナ名を「docker_oracle」にしている。
オプション「-p」でポート番号を1521に指定。
上記、コマンドを入力後以下の様にコンテナを形成していく。
(ここが鬼門なので、成功例を全部載せちゃう)
ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: {初期PASSWORD}
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 23-APR-2018 20:49:14
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Starting /opt/oracle/product/12.2.0.1/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /opt/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/c39cc97df02e/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 23-APR-2018 20:49:14
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/c39cc97df02e/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
The listener supports no services
The command completed successfully
[WARNING] [DBT-11209] Current available physical memory is less than the required physical memory (2,048MB) for creating the database.
[WARNING] [DBT-10102] The listener configuration is not selected for the database. EM DB Express URL will not be accessible.
CAUSE: The database should be registered with a listener in order to access the EM DB Express URL.
ACTION: Select a listener to be registered or created with the database.
Copying database files
1% complete
13% complete
25% complete
Creating and starting Oracle instance
26% complete
30% complete
31% complete
35% complete
38% complete
39% complete
41% complete
Completing Database Creation
42% complete
43% complete
44% complete
46% complete
47% complete
50% complete
Creating Pluggable Databases
55% complete
75% complete
Executing Post Configuration Actions
100% complete
Look at the log file "/opt/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 23 20:55:08 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>
System altered.
SQL>
Pluggable database altered.
SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
ORCLPDB1(3):CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/orcl/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
2018-04-23T20:55:07.244411+00:00
Resize operation completed for file# 4, old size 66560K, new size 71680K
ORCLPDB1(3):Completed: CREATE SMALLFILE TABLESPACE "USERS" LOGGING DATAFILE '/opt/oracle/oradata/orcl/ORCLPDB1/users01.dbf' SIZE 5M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO
ORCLPDB1(3):ALTER DATABASE DEFAULT TABLESPACE "USERS"
ORCLPDB1(3):Completed: ALTER DATABASE DEFAULT TABLESPACE "USERS"
2018-04-23T20:55:08.398996+00:00
ALTER SYSTEM SET control_files='/opt/oracle/oradata/orcl/control01.ctl' SCOPE=SPFILE;
ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
Completed: ALTER PLUGGABLE DATABASE ORCLPDB1 SAVE STATE
2018-04-23T21:04:07.553677+00:00
Warning: VKTM detected a forward time drift.
Please see the VKTM trace file for more details:
/opt/oracle/diag/rdbms/orcl/orcl/trace/orcl_vktm_2062.trc
2018-04-23T21:04:54.869186+00:00
ORCLPDB1(3):Resize operation completed for file# 10, old size 337920K, new size 358400K
この後もスクリプトが続いてどうしていいか分からなくなるが、
閉じるボタンを押して閉じてしまって大丈夫。
(今のところ問題なし。スクリプトの抜け方あるのかな?)
パスワードは最初の方に、
ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: {初期PASSWORD}
で表示されるので、見逃すことなかれ。
#########################
DATABASE IS READY TO USE!
#########################
の文字が出てきたらコンテナ上にDBを作成することが成功している。
やったね!!
次回は、SQLDeveloperで作成したDBに接続する方法の記事書きます!
お見逃しなく〜