Oracleのマルチテナントアーキテクチャとは、1つのデータベースインスタンス(CDB)の中で複数の独立したデータベース(PDB)を管理する仕組みです。

マルチテナント・アーキテクチャはOracle Database 12cから出てきた機能になり、次のLong Term ReleaseであるOracle Database 23cでは必須構成(従来型のデータベースはサポート対象外)になります。

以下の図のような形がマルチテナントアーキテクチャのイメージになります。

参考:https://blogs.oracle.com/oraclemaster/om-golddba-2019-seminar-1

PDB(プラガブルデータベース)とCDB(コンテナデータベース)

PDB(プラガブルデータベース)は、ユーザーデータや個別アプリケーションを配置する独立したデータベースです。プラガブル(Pluggable)は、電源のコンセントプラグのように、「プラグとして使用が可能な」データベースということです。

CDB(コンテナデータベース)は、すべての基盤となる全体のコンテナです。「コンテナ」と呼ばれる理由は、物流で使われる貿易用コンテナ(輸送用コンテナ)の仕組みにそっくりだからです。

マルチテナントアーキテクチャ

マルチテナントアーキテクチャは、複数のOracle Databaseを統合して管理するための技術で、Oracle 12c R1から実装された技術です。以下の引用のように例えてマルチテナントアーキテクチャは説明することができます。

マルチテント・アーキテクチャのCDB構成は「駅ビル」と思っていただくといいでしょう。

先ほど紹介した「商店街通りの各店舗」が「駅ビル」にテナントとして入ったと考えてください。

また駅ビルには、各店舗のテナントや共有リソースを管理するための管理ルームのようなところがあると思いますが、これがコンテナ・データベースでいうところの「CDBルート」と考えるとよいと思います。

 

https://blogs.oracle.com/oraclemaster/om-golddba-2019-seminar-1

 

構成を読み解くときは「処理する仕組み」と「データの入れ物」を分ける

前の図を技術用語に結び付けると、インスタンスはSGAやバックグラウンドプロセスなどの処理機構、CDBはルートとPDBを含むデータベースです。PDBを1つ追加するたびに、別のインスタンスを起動するわけではありません。通常の単一インスタンス構成では1つのインスタンスがCDBを扱い、Oracle RACでは複数インスタンスが同じCDBを扱います。

コンテナ 主な役割 設問での見分け方
CDB$ROOT CDB全体の管理とOracleが提供する共通の定義を保持 CDBに必ず1つ。業務アプリケーションの表は通常PDBへ置く
PDB$SEED 新しいPDBを作るためのテンプレート CDBに必ず1つ。読取り専用で使用し、業務データを追加する場所ではない
通常のPDB アプリケーションのスキーマ・表・データを保持 PDB単位で接続、開閉、複製、移動などを行う

共有されるものと分かれるもの

制御ファイル、オンラインREDOログ、インスタンスのSPFILEなどはCDB側の構成です。一方、各PDBはSYSTEM・SYSAUXなどの表領域とデータファイルを持ちます。ローカルUNDOモードではPDBごとにUNDOも持ちます。PDBが同じCDB内にあるからといって、業務表やデータファイルをすべて共有するわけではありません。

利用者にはPDBが独立したデータベースのように見えますが、CPUやメモリーなどを共有するため、負荷の大きいPDBが他のPDBに影響する可能性があります。リソース制御は、この共有による影響を調整する仕組みです。論理的な分離と物理資源の共有を両方理解しておくと、管理・可用性・性能の問題を整理しやすくなります。

公式ドキュメント:マルチテナント・アーキテクチャの概要(Oracle Database 19c)。