[Oracle Database] 公式Docker Imageを利用してOracle Database 19c環境を構築してみた

本記事の目的

先日、Oracle Database 19c がLinuxプラットフォーム向けにリリースされた記事を書きましたが、早くもOracle 社公式の Docker Imageが提供されましたので、検証環境にて構築手順(インストールから接続確認まで)を確認してみました。

Oracle Database 19c available on GitHub

Docker Imageを利用した環境構築手順については、上記ブログおよびDocker Imageのreadmeなどに記載されているのですが、実際に試していくつかハマッタところもあったので、備忘録を兼ねて簡単に紹介してみます。

なお、12c版ではありますが、構築手順を解説しているブログ記事(by chiroitoさん)がありましたので、あわせて参照いただくと理解しやすいと思います。

公式 Oracle Database の Docker イメージを構築

 

ちなみに、検証環境にはOracle CloudのComputeインスタンスを利用しました。
# こういう時、クラウド環境って簡単に利用できて便利ですねー。
# もちろんOracle Cloudにもトライアル環境が用意されてます(宣伝)

 

っと、前置きが長くなりましたが、そろそろ本題どうぞ!

 

 

検証内容

Oracle Database19c環境を構築するまでの手順は次の通りです。

  1. Oracle Cloud上でコンピュートインスタンスを準備
  2. Oracle/docker-images の準備
  3. Oracle Database 19cインストールバイナリの準備
  4. Docker Imageを利用した19c環境構築
  5. Oracle DB接続確認

前述のブログ記事などで詳しい解説があるので、こちらではポイントを中心に書いてきます。

 

Oracle Cloud上でコンピュートインスタンスを準備

今回の検証環境は、Oracle Cloudの標準プラットフォームとして提供されている「Oracle Linux 7.6」のイメージを利用して準備しました。

インストール要件を満たしていれば良いはずですが、ブートボリュームは少なくとも100GB程度を用意しておくのをお奨めします。
※デフォルト・ブート・ボリューム・サイズ: 46.6 GBとなっているので要注意。
そのままだと領域不足で失敗します(経験者が言うから間違いなしw)。

 

Oracle Cloudでのコンピュートインスタンス(仮想マシン)の作成手順は、以下のチュートリアル(1)-(3)あたりが参考になります。

チュートリアル : Oracle Cloud Infrastructure を使ってみよう

 

 

Oracle/docker-images の準備

「Oracle Linux 7.6」のイメージには、gitがプリインストールされていなかったので、以下の手順でインストール。

[root@comp-reiwa01 ~]# yum install git
(中略)

Installed:
git.x86_64 0:1.8.3.1-20.el7

Dependency Installed:
perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-20.el7
perl-TermReadKey.x86_64 0:2.30-20.el7

Complete!

 

・docker image入手

[opc@comp-reiwa01 ~]$ pwd
/home/opc
[opc@comp-reiwa01 ~]$ git clone https://github.com/marcelo-ochoa/docker-images.git
Cloning into 'docker-images'...
remote: Enumerating objects: 10283, done.
remote: Total 10283 (delta 0), reused 0 (delta 0), pack-reused 10283
Receiving objects: 100% (10283/10283), 8.94 MiB | 3.14 MiB/s, done.
Resolving deltas: 100% (6009/6009), done.
[opc@comp-reiwa01 ~]$ ls
docker-images

 

 

Oracle Database 19cインストールバイナリの準備

Oracle Databaseのインストールバイナリは、OTNのOracle Database ソフトウェア・ダウンロードのページよりダウンロードできます。

今回は19c版(LINUX.X64_193000_db_home.zip)を選択してダウンロード。

ダウンロードには「OTN開発者ラインセンス」の同意が必要です。

 

OTN開発者ライセンス何それ?という方には、こちらのFAQなどが参考になると思います。

 

ダウンロードした ファイルは zip 形式のまま、先ほど準備したdocker-imagesの以下のディレクトリへ格納してください。

[opc@comp-reiwa01 ~]$ cd docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0
[opc@comp-reiwa01 dockerfiles]$ ls -l 19.3.0
total 2988072
-rwxrwxr-x. 1 opc opc 1050 May 3 14:12 checkDBStatus.sh
-rwxrwxr-x. 1 opc opc 905 May 3 14:12 checkSpace.sh
-rw-rw-r--. 1 opc opc 63 May 3 14:12 Checksum.ee
-rw-rw-r--. 1 opc opc 63 May 3 14:12 Checksum.se2
-rwxrwxr-x. 1 opc opc 3088 May 3 14:12 createDB.sh
-rw-rw-r--. 1 opc opc 9204 May 3 14:12 dbca.rsp.tmpl
-rw-rw-r--. 1 opc opc 6878 May 3 14:12 db_inst.rsp
-rw-rw-r--. 1 opc opc 3357 May 3 14:12 Dockerfile
-rw-rw-r--. 1 opc opc 1764 May 3 14:12 Dockerfile.nfs
-rwxrwxr-x. 1 opc opc 2526 May 3 14:12 installDBBinaries.sh
-rw-rw-r--. 1 opc opc 3059705302 May 3 02:02 LINUX.X64_193000_db_home.zip★ここに配置
-rwxrwxr-x. 1 opc opc 6526 May 3 14:12 runOracle.sh
-rwxrwxr-x. 1 opc opc 1015 May 3 14:12 runUserScripts.sh
-rwxrwxr-x. 1 opc opc 758 May 3 14:12 setPassword.sh
-rwxrwxr-x. 1 opc opc 932 May 3 14:12 setupLinuxEnv.sh
-rwxrwxr-x. 1 opc opc 678 May 3 14:12 startDB.sh

 

Docker Imageを利用した19c環境構築

・docker インストール

あとは、Docker Imageを利用して19cがインストールされたコンテナを実行すればよいだけ。

なのですが、またしても「Oracle Linux 7.6」のイメージには、dockerがプリインストールされていなかったので、以下の手順でインストール。

[root@comp-reiwa01 ~]# yum update
(結果省略)


[root@comp-reiwa01 ~]# yum install docker-engine
(中略)
Installed:
docker-engine.x86_64 0:18.09.1.ol-1.0.5.el7

Dependency Installed:
container-selinux.noarch 2:2.77-5.el7
containerd.x86_64 0:1.2.0-1.0.5.el7
criu.x86_64 0:3.9-5.el7
libnet.x86_64 0:1.1.6-7.el7
protobuf-c.x86_64 0:1.0.2-3.el7
runc.x86_64 0:1.0.0-19.rc5.git4bb1fe4.0.3.el7

Complete!

 

・docker起動

[root@comp-reiwa01 ~]# systemctl start docker
[root@comp-reiwa01 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/docker.service.d
└─docker-sysconfig.conf
Active: active (running) since Fri 2019-05-03 15:01:39 GMT; 8s ago
Docs: https://docs.docker.com
Main PID: 14008 (dockerd)
Tasks: 10
Memory: 34.2M
CGroup: /system.slice/docker.service
└─14008 /usr/bin/dockerd --selinux-enabled

May 03 15:01:37 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:37.30362...c
May 03 15:01:37 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:37.40923..."
May 03 15:01:37 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:37.41059..."
May 03 15:01:37 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:37.88891..."
May 03 15:01:38 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:38.21264..."
May 03 15:01:39 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:39.68258...2
May 03 15:01:39 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:39.68293...l
May 03 15:01:39 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:39.68317..."
May 03 15:01:39 comp-reiwa01 dockerd[14008]: time="2019-05-03T15:01:39.70830..."
May 03 15:01:39 comp-reiwa01 systemd[1]: Started Docker Application Containe....
Hint: Some lines were ellipsized, use -l to show in full.

 

・opcユーザにdocker操作権限を付与(オプション)

opcユーザでdockerを操作する場合は、以下の手順でdockerグループへ登録

[root@comp-reiwa01 ~]# groupadd docker
groupadd: group 'docker' already exists
[root@comp-reiwa01 ~]# usermod -g docker opc
[root@comp-reiwa01 ~]# systemctl restart docker.service

 

・19c用のコンテナを起動

docker imageのreadmeにある実行例を参考に、以下のコマンドにて19c用のコンテナを起動します。

[root@comp-reiwa01 ~]# docker run --name 19c -p 1521:1521 -p 5500:5500 oracle/database:19.3.0-ee
ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: o+8ogFbJjOI=1★sysのパスワード

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 04-MAY-2019 12:38:41

Copyright (c) 1991, 2019, Oracle. All rights reserved.

Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/0658dee10f61/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 19.0.0.0.0 - Production
Start Date 04-MAY-2019 12:38:41
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/19c/dbhome_1/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/0658dee10f61/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
Prepare for db operation
8% complete
Copying database files
31% complete
Creating and starting Oracle instance
32% complete
36% complete
40% complete
43% complete
46% complete
Completing Database Creation
51% complete
54% complete
Creating Pluggable Databases
58% complete
77% complete
Executing Post Configuration Actions
100% complete
Database creation complete. For details check the logfiles at:
/opt/oracle/cfgtoollogs/dbca/ORCLCDB.
Database Information:
Global Database Name:ORCLCDB
System Identifier(SID):ORCLCDB
Look at the log file "/opt/oracle/cfgtoollogs/dbca/ORCLCDB/ORCLCDB.log" for further details.

SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 4 12:54:54 2019
Version 19.3.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL>
System altered.

SQL>
System altered.

SQL>
Pluggable database altered.

SQL>
PL/SQL procedure successfully completed.

SQL> Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
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:
(結果省略)

 

この後もXDBインストールやらデータファイルの拡張処理が実行されますが、上記「DATABASE IS READY TO USE!」が出力されれば、とりあえずOK。

既に、Oracle Database 19cがDocker コンテナ上で動作しているはず。

 

Oracle DB接続確認

(docker runが続行中の場合は)別端末よりOracle DBへ接続してみます。

・dockerコンテナ名確認

[opc@comp-reiwa01 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0658dee10f61 oracle/database:19.3.0-ee "/bin/sh -c 'exec $O…" 42 minutes ago Up 42 minutes (healthy) 0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp 19c

⇒上記の場合は「0658dee10f61 」がコンテナ名と確認できる。

 

・sqlplusログイン確認

上記で確認したコンテナ名とsysのパスワード(docker run実行直後に表示されているはず)を指定して、以下のような形式でsqlplusを実行。

[opc@comp-reiwa01 ~]$ docker exec -ti 0658dee10f61 sqlplus sys/o+8ogFbJjOI=1@//localhost:1521/ORCLCDB as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 4 13:22:43 2019
Version 19.3.0.0.0

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


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

 

⇒ログイン成功!

 

・簡易確認

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 READ WRITE NO

SQL> alter session set container=ORCLPDB1;

Session altered.

SQL> select sysdate from dual;

SYSDATE
---------
04-MAY-19

⇒PDBにも接続成功!

 

GW中に無事、Oracle Database 19c環境をゲットできました。

 

 

おまけ:解決したエラー編

上に書いた手順を参考にすれば、サクッと環境を構築できると思いますが、いくつか想定外エラーに遭遇しました。

おまけとして以下の記事にまとめましたので、興味ある方は合わせて参照ください。

[Oracle DB] 公式Docker Imageを利用してOracle Database 19c環境を構築してみた(解決したエラー編)

 

 

おまけ:RAC構築編

続編として、RAC環境を構築してみた記事も書いたので、あわせてどうぞ。

[Oracle Database] 公式Docker Imageを利用してOracle Database 19cのRAC環境を構築してみた

 

 

参考情報

※既に紹介したものも含みます。

Oracle Database 19c available on GitHub

oracle/docker-images

Oracle Database on Docker Readme

Building Oracle 19c Docker image

公式 Oracle Database の Docker イメージを構築

Oracle Container Registry
⇒オラクルが管理しているDockerコンテナレジストリ

 

 

入門者にお奨めと評判のDocker本↓

 

 

スポンサードリンク

3 Trackbacks / Pingbacks

  1. [Oracle DB] 公式Docker Imageを利用してOracle Database 19c環境を構築してみた(解決したエラー編) - IT Edge Blog
  2. [Oracle DB] Oracle Database 19c Now Available!! - IT Edge Blog
  3. [Oracle Database] 公式Docker Imageを利用してOracle Database 19cのRAC環境を構築してみた | | IT Edge Blog

Leave a Reply

Your email address will not be published.


*