Oracle Database (CDB) on Docker を動かしてみる

28
Copyright © 2017 Oracle and/or its affiliates. All rights reserved. 2017/11/17 JPOUG in 15 minutes Oracle Database (CDB) on Docker を動かしてみる 日本オラクル株式会社 Database ソリューション部 佐々木亨

Transcript of Oracle Database (CDB) on Docker を動かしてみる

Page 1: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

2017/11/17JPOUG in 15 minutes

Oracle Database (CDB) on Dockerを動かしてみる日本オラクル株式会社

Database ソリューション部佐々木亨

Page 2: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。

OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。

2

Page 3: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

本日お伝えしたいこと(個人の見解です)

1. 「空のデータベースを5分で作成したい」

→Oracle DB用Dockerイメージによるコンテナ作成が便利

2. 「特定のデータを持つデータベースを手軽に作成したい」

→Docker 上で動作する PDB 機能の利用が便利

これらをデータベースの稼働するDocker コンテナを作成するデモを通じてお伝えします

3

Page 4: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

OracleとDockerの関係

• https://developer.oracle.com/docker

• OracleはOracle製品をDockerコンテナリポジトリに多く登録しています

• Oracle Database, Linux, MySQL, WebLogic 等

4

Page 5: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

Docker StoreのOracle製品

5

Page 6: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

Oracle Database on Docker の対応状況

• My Oracle Support Note

– “Oracle Support for Database Running on Docker” (Doc ID 2216342.1)

– “Docker(ドッカー)上で動作するOracleデータベースのサポートについて” (Doc ID 2220780.1)

• Docker 上の Oracle Database は下記条件でサポートされる

– Linux のバージョン(Dockerホスト)

• Oracle Linux 7 - UEK 4

• Red Hat Enterprise Linux 7

– RAC構成はサポートしていない

6

Oracle RAC support is coming

Page 7: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

Docker Imageの入手方法は2通り

下記のいずれかがOracle公式のもの

1. ビルド済みのイメージをダウンロード

–Oracle Container Registry https://container-registry.oracle.com

–Docker Store https://store.docker.com

2. ビルド用のファイルを入手して自分でイメージを作成

–GitHub上のDocker ビルドファイル https://github.com/oracle/docker-images

7

Page 8: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

Docker Store / Oracle Container Repository

• Docker Store レジストリまたは、Oracle Container レジストリでOracle DatabaseEnterprise Edition 12.2.0.1 Image が利用可能

– https://store.docker.com

– https://container-registry.oracle.com

8

Page 9: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

イメージの制限事項と考慮事項

• Oracle Container レジストリ/Docker Store で提供されているイメージでは下記機能はサポートされません

– RAC 構成

– Data Guard 構成

– DB Option とパッチ適用

• 考慮事項

– デフォルトだとコンテナ削除するとDBも削除される。コンテナ削除後もDBを残したい場合はコンテナ作成時にオプション指定して別VolumeにDB作成する

• リソース要件

– ディスクスペース:8GB以上、メモリ:2GB以上

9

[参考]https://store.docker.com/images/oracle-database-enterprise-edition

Page 10: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

GitHub上でDocker ビルドファイルが利用可能

• リポジトリ: https://github.com/oracle/docker-images

• 自分でOracle DatabaseのDockerイメージを作成する方法

• 12.2.0.1 EE/SE2, 12.1.0.2 EE/SE2, 11.2.0.2 XE のためのビルドファイル

10

Page 11: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

Docker 上の Oracle Database の使い道

11

開発端末 ネットワーク設定

開発リソースの準備

VMイメージの確認追加の設定など(VM/OS/DB)

ネットワーク接続

VMのサーバーストレージ

などサイジング

リソースの払い出し依頼

DockerやOracle Cloud

データセンターやサーバールームの準備

開発端末開発チーム

開発チーム

DockerやOracle Cloudの準備

数週間 数週間

開発リソースの準備

数時間

セットアップ

• セルフサービスですぐに払い出し

• 必要に応じたリソースの拡張縮退

• Oracle CloudならHW資産の管理低減、利用した分の従量課金

課題の例

DockerやOracle Cloudを利用

Page 12: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

簡単なDEMO

公開されているイメージファイルを使ってDB作成

Page 13: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ環境

• Laptop上のVirtualBoxを利用

• 仮想マシン(Docker ホスト)

– Oracle Linux 7.4 UEK4

– メモリ8GB

– Docker コンテナのローカルディスク用の領域 40GB

• 仮想マシン上にDocker Engineをインストール済み

13

VirtualBox

仮想マシン(Dockerホスト)

コンテナ1(デモ①で作成)

Docker Engine

コンテナ2(デモ②で作成)

Page 14: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

ディスク領域

14

Docker ホスト

/

home

oracle

oradata

oradata2var

lib

docker

… • コンテナ1• コンテナ2ローカルストレージ領域

コンテナ1(dockerDB1)

コンテナ2(dockerDB2)

/ORCL (DB用)

/ORCL (DB用)

/dev/sdb 40G 3.4G 35G 9% /var/lib/docker

/dev/sdc 12G 18M 9.6G 1% /home/oracle/oradata

/dev/sdd 12G 18M 10G 1% /home/oracle/oradata2

Page 15: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ内容①(DB12.2 EEの環境を5分で作成・引渡)

• Oracle Database 12.2.0.1 EE の環境を5分で作成して開発チームに引き渡す

– Oracle Container レジストリの公式イメージを使う

– Oracle Database (Single Instance) が動作するコンテナを作成する

– コンテナ内に接続し、データベースに接続する

– データを投入する

15

コンテナ1(dockerDB1)

/ORCL (DB用) ORCL

Page 16: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ内容①(DB12.2 EEの環境を5分で作成・引渡)

• Docker Imageの確認(既にダウンロードしてきている)

16

[root@mydocker ~]# docker images

REPOSITORY TAG IMAGE ID

CREATED SIZE

store/oracle/database-enterprise 12.2.0.1

12a359cd0528 2 months ago 3.44 GB

• Docker コンテナの作成

# docker run -d --name dockerDB -v /home/oracle/oradata:/ORCL

store/oracle/database-enterprise:12.2.0.1

• “–v” オプションで外部ボリュームとして /home/oracle/oradataを指定、コンテナ内の /ORCL にマウントする

– Docker コンテナ作成時に/ORCLに$ORACLE_HOMEやデータファイルなどが配置される

Page 17: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ内容①(DB12.2 EEの環境を5分で作成・引渡)

• コンテナ作成の進捗はコマンドで確認できる

17

# docker logs dockerDB

# docker ps -a

• コンテナへの接続

# docker exec -it dockerDB bash

• データベースに接続

$ sqlplus / as sysdba

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED READ ONLY NO

3 ORCLPDB1 READ WRITE NO

Page 18: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ内容①(DB12.2 EEの環境を5分で作成・引渡)

• PDBに接続してデータをロード

18

SQL> alter session set container=ORCLPDB1;

SQL> create user demo1 identified by Oracle12c;

SQL> grant connect, resource to demo1;

SQL> alter user demo1 quota unlimited on users;

SQL> conn demo1/Oracle12c@ORCLPDB1

SQL> create table demo1 (col1 number);

SQL> insert into demo1 values (1);

SQL> commit;

SQL> select * from demo1;

• PDBへの接続用のTNSNAMES.ORAエントリはコンテナ作成時点で追加済

– /u01/app/oracle/product/12.2.0/dbhome_1/admin/ORCLCDB/tnsnames.ora

Page 19: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモで分かったこと

•依頼して5分後にはデータベースが稼働するコンテナが出来上がる

•稼働するデータベースはCDB構成である

19

Page 20: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ内容②(①で作成したDBの複製を作成・引渡)

20

コンテナ1(dockerDB1)

コンテナ2(dockerDB2)

/ORCL (DB用)

/ORCL (DB用)

ORCLPDB1ORCLPDB2

A)PDB複製

Docker ホスト

/

home

oracle

oradata

oradata2var

lib

docker

… • コンテナ1• コンテナ2ローカルストレージ領域

B)データを丸ごとコピーして、新規コンテナ作成

ORCLPDB1

Page 21: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ内容②(①で作成したDBの複製を作成・引渡)

• 既存のPDBの複製を作る

21

SQL> create pluggable database ORCLPDB2 from ORCLPDB1

FILE_NAME_CONVERT=('/u02/app/oracle/oradata/ORCLCDB/orclpdb1/','/u0

2/app/oracle/oradata/ORCLCDB/orclpdb2/');

Pluggable database created.

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

2 PDB$SEED READ ONLY NO

3 ORCLPDB1 READ WRITE NO

4 ORCLPDB2 MOUNTED

Page 22: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ内容②(①で作成したDBの複製を作成・引渡)

• PDBをオープン

22

SQL> alter pluggable database ORCLPDB2 open;

• 新規PDBに接続し、データ確認

SQL> !vi

/u01/app/oracle/product/12.2.0/dbhome_1/admin/ORCLCDB/tnsnames.ora

SQL> conn demo1/Oracle12c@ORCLPDB2

SQL> show con_name

SQL> select * from demo1;

Page 23: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ内容②(①で作成したDBの複製を作成・引渡)

• 同じデータベースを持つ新規コンテナを作成する

• ①で作成したデータベースを停止する

23

# cp -rp /home/oracle/oradata/* /home/oracle/oradata2/

• コピーしたファイルを使う新規コンテナを作成

# docker run -d --name dockerDB2 -v /home/oracle/oradata2:/ORCL

store/oracle/database-enterprise:12.2.0.1

• Dockerホスト上でDB用の外部ディスク上のデータをコピー

SQL> conn / as sysdba;

SQL> shutdown immediate;

• コンテナ作成時に、/ORCL 内にソフトウェア、データファイルが存在する場合は、新規にイメージの解凍はせず、配置済みのDBを起動するのみの動作となる

Page 24: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

コンテナ作成完了を待っている間に・・・なぜCDB構成?Dockerとの使い分けは?開発部門の答え

「不必要な複製を避ける点でDockerとMTAは共通点がある」

「DBをプロビジョニングするベストな方法はMTA。共存は可能」

• サーバーのリソースを有効活用するという点では

MTA(Datafile複製) > Docker(DBソフト複製) > VM(OS複製)

• OSを分離する必要が無いなら MTA で既存PDBを複製すれば良い

• OSを(見かけ上)分離したいなら、OSが丸ごと複製されるVMより、Dockerコンテナを使ったほうがリソース効率が良い

24

Page 25: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモ内容②(①で作成したDBの複製を作成・引渡)

• コンテナへの接続

25

# docker exec -it dockerDB2 bash

• PDBへ接続

$ sqlplus / as sysdba

SQL> show pdbs

SQL> conn demo1/Oracle12c@ORCLPDB1

SQL> select * from demo1;

Page 26: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

デモで分かったこと

•特定のデータが入ったデータベースが欲しい場合はPDBのクローンが便利

•Docker コンテナの作成でも可能

26

Page 27: Oracle Database (CDB) on Docker を動かしてみる

Copyright © 2017 Oracle and/or its affiliates. All rights reserved.

まとめ

•テスト開発環境としてシングル・インスタンスのデータベースを手軽に作りたい場合にDockerは便利(でも、MTAも忘れないで)

•データベースの永続化もできる

•RAC は将来サポートされる予定

27

Page 28: Oracle Database (CDB) on Docker を動かしてみる