Oracle Database (CDB) on Docker を動かしてみる
-
date post
16-Mar-2018 -
Category
Data & Analytics
-
view
428 -
download
1
Transcript of 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 ソリューション部佐々木亨
Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
2
Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
本日お伝えしたいこと(個人の見解です)
1. 「空のデータベースを5分で作成したい」
→Oracle DB用Dockerイメージによるコンテナ作成が便利
2. 「特定のデータを持つデータベースを手軽に作成したい」
→Docker 上で動作する PDB 機能の利用が便利
これらをデータベースの稼働するDocker コンテナを作成するデモを通じてお伝えします
3
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
Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
Docker StoreのOracle製品
5
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
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
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
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
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
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を利用
Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
簡単なDEMO
公開されているイメージファイルを使ってDB作成
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(デモ②で作成)
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
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
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やデータファイルなどが配置される
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
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
Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
デモで分かったこと
•依頼して5分後にはデータベースが稼働するコンテナが出来上がる
•稼働するデータベースはCDB構成である
19
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
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
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;
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を起動するのみの動作となる
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
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;
Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
デモで分かったこと
•特定のデータが入ったデータベースが欲しい場合はPDBのクローンが便利
•Docker コンテナの作成でも可能
26
Copyright © 2017 Oracle and/or its affiliates. All rights reserved.
まとめ
•テスト開発環境としてシングル・インスタンスのデータベースを手軽に作りたい場合にDockerは便利(でも、MTAも忘れないで)
•データベースの永続化もできる
•RAC は将来サポートされる予定
27