12cの国内提供が開始されました。本連載では、500を超える新機能の中から、代表的なものをピックアップしてわかりやすく解説していきます。第1回目となる今回は、12c最大の目玉であるマルチテナント機能について解説します。12c(以下、12c)の国内提供が開始されました。Databaseにはなかった多くのコンセプトを引っさげて登場した12cには、実に500を超える新機能が実装されています。新機能を理解しやすくするために、まずはこれまでのバージョンについて少しだけ振り返ってみましょう。Databaseは、その時代のトレンドにフィットするための機能を実装しながら進化を続けています。Management(ASM)を実装してきました。この流れで考えると、12cにはクラウド対応を考慮した機能が実装されているというのがイメージできるのではないでしょうか。Redactionなど、運用を自動的かつシンプルに行える機能が実装されています。Servicesなど、可用性をさらに高める機能もあります。Databaseがクラウド対応となるのに必要な機能なのです。12cの主要な新機能とは言え、急にクラウド対応と言われてピンと来ない方もいるかもしれません。ここで言うクラウドとは、パブリック・クラウドだけを指すのではなく、プライベート・クラウドや企業内における複数システムの統合なども含まれます。オンプレミスで稼働させる場合でも、マルチテナントによってデータベースの集約率を高めるといった使い方ができますので、多くのユーザが新機能のメリットを得られるようになっています。マルチテナントはこうして生まれた12cにおける最大の特徴は、データベースのマルチテナントを実現する機能が実装された点にあります。マルチテナントとは、1つのシステム上に複数のサービス(ユーザ)が同居している環境のことで、1つの建物内に複数の店舗や企業が同居している雑居ビルによく似ています。集約率が高まるので、運営側にとっては必要な資源や運用コストを削減できるというメリットがあります。利用者側にとっても、自社ビルを建築するよりはワンフロアを借りたほうが安価でビジネスを始められます。データベースをマルチテナント化するための手法はこれまでいくつか登場しており、代表的なものとして『仮想マシンを複数作成する』、『データベースを複数作成する』、『スキーマを複数作成する』などがあります。これらのメリット、デメリットを整理すると、12cのマルチテナントが理解しやすくなります。以下は1つのサーバ上に3つのサービスを同居させた場合のイメージ図です。データベースをマルチテナント化するための手法サーバ仮想化は、サービスの数だけ仮想マシンを起動し、その上でさらにデータベースを起動するという手法です。OSやデータベースのバージョンが異なっていてもマルチテナント化できるというメリットはありますが、サーバの台数は減っても管理しなければならないOSやデータベースの数は変わらないため、運用管理コストを抑える効果はありません。仮想化によるオーバーヘッドがあるため、他の手法と比べて集約率があまり高くならないというデメリットもあります。データベースを複数作成してマルチテナント化した場合、サーバ仮想化と比べて管理するOSの数は減りますが、データベースの数は変わりません。データベースを起動するにはインスタンスに一定のメモリを割り当てる必要があるため、集約率には限界があります。スキーマを複数作成した場合は集約率を高めることができますが、スキーマ名が競合している場合はスキーマ統合を検討したり、アプリケーションの改修をしたりといった作業が必要になります。仮想化や複数データベースの場合に確保されていた分離性がなくなるため、メモリやCPUといったリソースの割り当て方法やセキュリティ対策を十分に検討しなければなりません。このように、従来のマルチテナント手法にはメリット、デメリットがあるため、一概に正解を導き出せないという課題がありました。Multitenantと呼ばれる機能です。Editionのオプションとして提供されます。Multitenantを一言で表現すると、「データベースの中にデータベースを作成する機能」です。11g以前と比較すると、アーキテクチャが大きく変更されていることがわかります。11g以前とのアーキテクチャ比較メモリ領域とバックグラウンド・プロセス群から構成されるOracleインスタンスは特に変更されていませんが、データベースがコンテナ・データベース(CDB)という名前になり、その中にあるデータ・ファイルがプラガブル・データベース(PDB)として独立しています。アプリケーションから見ると、PDBの数だけデータベースがあるように見えるという仕組みです。1番のポイントは、PDBがいくつあってもインスタンスは1つだけというところです。PDBごとにメモリやプロセスを割り当てていたのでは、従来型のデータベースを複数作成する場合と同じで無駄なリソースを多く使用してしまいます。Multitenantの考え方なのです。して集約率を高め、さらにPDBとして独立性を持たせることで、スキーマ名の競合やセキュリティの見直しといった統合にありがちな課題まで、まとめて解決することができます。Multitenantでは11g以前と比べてアーキテクチャが大きく変更されましたが、パッチ適用やアップグレード、バックアップといった運用手順はこれまでと変わりません。それどころか、むしろ簡単になる場合もあります。パッチ適用やアップグレードを行う場合、PDBがいくつ作成されていたとしても、作業は1回で済みます。PDB1つひとつにパッチを適用するといった面倒な作業は必要ありません。Controlを使用します。DATABASE』コマンドを実行するだけで、1度にすべてのPDBのバックアップを取得することができます。DATABASE』コマンドが追加されています。PDB単位でリカバリを行うこともできます。マルチテナントのバックアップさらに、プラガブル(着脱可能)という発想を活かしたユニークな機能も備わっています。作成したPDBは取り外しが可能で、別のCDBに簡単に移動させることができます。PDBは1つひとつが独立してデータを保持しているため、USBメモリのように抜き差しするだけで移動が完了します。PDBを取り外すことを『Unplug』、取り付けることを『Plug』と呼びます。PDBのUnplugとPlugこのUnplugとPlugは移行やバージョンアップ、パッチ適用において効果を発揮します。Pumpなどを利用していましたが、それがUnplugとPlugだけで済むようになります。バージョンアップやパッチ適用はPDBではなくCDBに対して1度行うだけで良いため、あらかじめバージョンアップ済のCDBを別の場所に用意しておけば、UnplugとPlugでバージョンが違う環境にPDBを移動させることができます。「このPDBだけは暫く旧バージョンで稼働させておきたい」という場合や、「バージョンアップした環境で問題が起きたらすぐ切り戻しをしたい」という場合にも対応できます。PDBにはコピー(クローニング)機能もあり、開発やテストのために同じデータを持ったPDBを複数作成することができます。同一のCDB内にコピーを作成できるのはもちろんのこと、ネットワーク上にある別のCDBにコピーを作成することもできます。System、ZFS、NetApp)に対応したコマンドも用意されているため、それらを組み合わせると短時間でコピーを作成できます。今回はマルチテナント機能の概要についてお伝えしました。次回はマルチテナントの環境を実際に構築し、Unplug/Plugなどの操作を行いながら内部動作を解説します。隆ビジネスインフラ技術本部1995年入社。現在は「データベースのアシスト」を目指した事業戦略やプロダクトマーケティングを担当している。趣味:フットサル、ゴルフ、スキー、キャンプ、子供のサッカーチームのカメラマン担当。俊洋ビジネスインフラ技術本部2006年入社。データベース・システムの構築や運用トラブルの解決といった業務を経験し、その後新製品の検証やソリューションの立ち上げを経てエバンジェリストへ。2016年にクラウド事業を立ち上げ、現在はクラウドとデータベースの二足の草鞋を履いている。最後までご覧いただきありがとうございました。本記事でご紹介した製品・サービスに関するコンテンツをご用意しています。この記事の他にも、IT技術情報に関する執筆記事を多数公開しておりますのでぜひご覧ください。2019の様子を紹介します。SQLを拡張したプログラミング言語であるPL/SQLを理解し、活用していくための実践講座です。Databaseで発生するトラブルを「どんな方法で」「どのように」解決していくか。データベースの運用管理において、より円滑に業務を進めるために必要なノウハウを紹介していきます。