Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,092 views

Published on

日本オラクル株式会社Database ソリューション部
佐々木亨

Published in: Data & Analytics
  • Be the first to comment

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

  1. 1. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. 2017/11/17 JPOUG in 15 minutes Oracle Database (CDB) on Docker を動かしてみる日本オラクル株式会社 Database ソリューション部 佐々木亨
  2. 2. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するもので す。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むこ とはできません。以下の事項は、マテリアルやコード、機能を提供することをコミット メント(確約)するものではないため、購買決定を行う際の判断材料になさらな いで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時 期については、弊社の裁量により決定されます。 OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。 2
  3. 3. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. 本日お伝えしたいこと(個人の見解です) 1. 「空のデータベースを5分で作成したい」 →Oracle DB用Dockerイメージによるコンテナ作成が便利 2. 「特定のデータを持つデータベースを手軽に作成したい」 →Docker 上で動作する PDB 機能の利用が便利 これらをデータベースの稼働するDocker コンテナを作成す るデモを通じてお伝えします 3
  4. 4. 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
  5. 5. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. Docker StoreのOracle製品 5
  6. 6. 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
  7. 7. 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
  8. 8. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. Docker Store / Oracle Container Repository • Docker Store レジストリまたは、Oracle Container レジストリでOracle Database Enterprise Edition 12.2.0.1 Image が利用可能 – https://store.docker.com – https://container-registry.oracle.com 8
  9. 9. 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
  10. 10. 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
  11. 11. 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 を利用
  12. 12. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. 簡単なDEMO 公開されているイメージファ イルを使ってDB作成
  13. 13. 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 (デモ②で作成)
  14. 14. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. ディスク領域 14 Docker ホスト / home oracle oradata oradata2 var 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
  15. 15. 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
  16. 16. 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やデータファイルなどが配置される
  17. 17. 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
  18. 18. 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
  19. 19. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. デモで分かったこと •依頼して5分後にはデータベースが稼働するコンテナ が出来上がる •稼働するデータベースはCDB構成である 19
  20. 20. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. デモ内容②(①で作成したDBの複製を作成・引渡) 20 コンテナ1 (dockerDB1) コンテナ2 (dockerDB2) /ORCL (DB用) /ORCL (DB用) ORCLPDB1 ORCLPDB2 A) PDB 複製 Docker ホスト / home oracle oradata oradata2 var lib docker … • コンテナ1 • コンテナ2 ローカルスト レージ領域 B) データを丸ごと コピーして、 新規コンテナ作成 ORCLPDB1
  21. 21. 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
  22. 22. 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;
  23. 23. 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を起動するのみの動作となる
  24. 24. 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
  25. 25. 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;
  26. 26. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. デモで分かったこと •特定のデータが入ったデータベースが欲しい場合は PDBのクローンが便利 •Docker コンテナの作成でも可能 26
  27. 27. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. まとめ •テスト開発環境としてシングル・インスタンスの データベースを手軽に作りたい場合にDockerは便利 (でも、MTAも忘れないで) •データベースの永続化もできる •RAC は将来サポートされる予定 27

×