search
LoginSignup
28

More than 3 years have passed since last update.

posted at

Oracle on docker for Mac

はじめに

先日、自社の社内勉強会で
「dockerはとにかく軽い!」
「構築が簡単!」
と聞いてから、dockerを使いたくてウズウズしていたので、
docker上にOracleDBを構築してみた。

ので、速攻で構築できる方法を記事にしたいと思う。

dockerインストール

公式サイトからDocker for Macをダウンロードする。

スクリーンショット 2018-05-13 11.30.02.png

ダウンロードしてきた「Docker.dmg」を開き、
Applicationsに追加。
スクリーンショット 2018-05-13 11.58.13.png

Applicationsにいるクジラさんをクリック。スクリーンショット 2018-05-13 12.05.56.png

インストーラーにしたがって、
インストール(画像撮り忘れた。。。)
すると、メニューバーにこいつが出てくる。スクリーンショット 2018-05-13 12.11.41.png

こいつをクリックすると、
スクリーンショット 2018-05-13 13.02.19.png
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)をダウンロードしよう。
スクリーンショット 2018-05-13 14.59.16.png

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

カレントディレクトリが、

/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に接続する方法の記事書きます!

お見逃しなく〜

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
28