SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

Security Online Day 2022

2022年9月16日(金)10:00~17:10

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

Oracle Database 12cR2のすべて

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

 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という低価格で提供されているのですが、もしかしたらこのあたりに安さの秘訣があるのかもしれません。

次のページ
PDBのホットクローン、リフレッシュ

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
Oracle Database 12cR2のすべて連載記事一覧

もっと読む

この記事の著者

関 俊洋(セキ トシヒロ)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/8838 2017/01/18 06:00

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

2022年9月16日(金)10:00~17:10

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング