Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)テクノロジーでビジネスを加速するための実践Webメディア

テーマ別に探す

ユーザの意見をトコトン反映した12c R2のマルチテナント

2017/01/18 06:00

 Oracle Database 12c R2(以下12c R2)はクラウドファーストのデータベースとして、Oracle Cloud Platform上で先行リリースされています。12c R2には300を超える新機能が実装されており、なかでもマルチテナントはOracle Database 12c R1(以下12c R1)と比べて格段に進化しています。いずれやってくる12c R2へのバージョンアップに備えて、マルチテナントがどこまで進化したのかを押さえておきましょう。

 マルチテナント(Oracle Multitenant)は12c R1から提供されている機能です。データベースの中にデータベースを作ることができ、統合・集約を加速させる新しい手段として登場しました。最大の特長は集約率の高さで、H/W、OS、DBMSを共有するためリソースに無駄がなく、単一のインフラ上で多くのデータベースを稼働させることができます。

図1 Oracle Databaseのマルチテナント
図1 Oracle Databaseのマルチテナント

 ※以下の記事で詳細なアーキテクチャを解説していますので、併せてご参照ください。

 まさに12cの“c”が示すとおりクラウドを意識した機能と言えますが、いち技術者として見る限り、国内市場への浸透はまだ道半ばという印象です。アーキテクチャが変われば運用も変わるので、慎重に時間をかけて評価するというケースがほとんどではないでしょうか。データベースのメジャーバージョンアップはそれだけで一大プロジェクトです。できるだけ変更要素を減らしてリスクを抑えるという判断が働くのも当然と言えます。

 また、12c R1のマルチテナントを検証すると機能的な課題にぶつかることがあります。検証プログラムや技術者同士のディスカッションに参加した際、よく聞こえてきた課題が以下の4つです。

  •  PDBごとにメモリの割当てを制御したい
  •  異なるキャラクタセットのデータベースを統合したい
  •  データベースを止めずにクローンやUnplug/Plugなどの操作を実施したい
  •  各PDBで共通して使うデータを一元管理したい

 結論から言うと、これらの課題は12c R2ですべて解決できます。12c R2のマルチテナントはユーザの意見を取り入れた機能改善が多く行われており、12c R1とは違った評価を得られるだけの魅力が備わっています。今回はマルチテナントの進化をいくつかのポイントに分けてご紹介します。

PDBごとのメモリ管理

 マルチテナントは、単一のインフラ上で高密度のデータベース統合を実現する機能です。そのため、CPUやメモリ、ストレージといった限られたリソースをPDB間でどう制御していくかが鍵になります。

 リソース制御については12c R1の時点である程度機能が備わっており、PDBごとにCPUとI/O(*1)を制御できます。ただし、メモリについてはPDBごとに制御できず、全PDBで1つのSGA(System Global Area)を共有しています。リソースの無駄をなくして集約率を高める仕組みになっているのですが、以下のように高負荷なPDBがSGAを占有すると、他のPDBに影響を与える可能性があります。

 (*1)12c R1のI/O制御はExadata環境でのみ可能

図2  12c R1までのメモリ制御
図2 12c R1までのメモリ制御

 12c R2のマルチテナントではPDBごとにメモリ関連のパラメータを設定することができるようになりました。SGA_MIN_SIZEというパラメータが新しく追加され、これを設定しておけばPDBに割り当てられる最低限のSGAを保証できます。また、PDBにSGA_TARGETを設定するとそれがSGAの上限値になるので、他のPDBに影響を与えずに済みます。

図3 12c R2のメモリ制御
図3 12c R2のメモリ制御
表1:PDBごとに設定できる初期化パラメータ
初期化パラメータ 説明
SGA_TARGET  PDBのSGA最大サイズ
(CDBのSGAに空きがあっても上限突破しない)
SGA_MIN_SIZE PDBに保証されるSGAのサイズ
(SGA_TARGETの50%以下に設定)
DB_CACHE_SIZE PDBに保証されるバッファキャッシュのサイズ
SHARED_POOL_SIZE PDBに保証される共有プールのサイズ
PGA_AGGREGATE_LIMIT PDBのPGA最大サイズ
PGA_AGGREGATE_TARGET PDBのPGAターゲットサイズ

 このように、12c R2ではPDBごとにきめ細かくメモリを制御できます。PDBの独立性が高まり、より安全に統合・集約を進められるようになったと言えるでしょう。ただし、パラメータの設定は慎重に行う必要があります。例えば、SGA_MIN_SIZEを必要以上に高く設定すると集約率が落ちてしまいます。最初からすべてのPDBを対象とせず、必要なPDBに絞ってパラメータを設定することをお薦めします。

 参考までにOracle社が提供するクラウドサービスであるExadata Express Cloud Serviceのパラメータを覗いてみましょう。Exadata Express Cloud Serviceは、マルチテナントのPDBだけを提供するPaaSです。つまり、1つのCDBを独占して利用するのではなく、複数のユーザで共有しているのです。

図4 Exadata Express Cloud Serviceのアーキテクチャ
図4 Exadata Express Cloud Serviceのアーキテクチャ
表2:Exadata Express Cloud Serviceの初期化パラメータ
初期化パラメータ  設定値(*1)
SGA_TARGET 3G
SGA_MIN_SIZE 0
PGA_AGGREGATE_LIMIT 3G
PGA_AGGREGATE_TARGET 1500M

(*1)X20という最小のプランを選択した場合の値です

 パラメータを見ると、SGA_TARGETは設定されていますがSGA_MIN_SIZEは0になっています。つまり、上限だけが設定されている状態です。クラウドサービスのように集約率を重視する場合、こうした設定にしておくとリソースの無駄がありません。Exadata Express Cloud Serviceは月額\21,000という低価格で提供されているのですが、もしかしたらこのあたりに安さの秘訣があるのかもしれません。

※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 関 俊洋(セキ トシヒロ)

    株式会社アシスト データベース技術本部 データベース・エバンジェリスト データベース・システムの構築や運用トラブルの解決といったフィールド・サポート業務を経験し、その後は新製品の検証やソリューションの立ち上げに従事。現在はデータベースの価値や魅力を伝えるための執筆や講演活動を行っている。

バックナンバー

連載:Oracle Database 12cR2のすべて

この記事もオススメ

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5