Oracle University 講師が ORACLE MASTER 取得を目指している方に向けて試験トピックを解説するブログ連載講座。「ORACLE MASTER Gold DBA 2019」資格取得に向けた試験トピックについて解説します。

————————————————- 

本連載ではORACLE MASTER Gold DBA 2019(1Z0-083-JPN: Oracle Database AdministrationⅡ試験)の主要分野であるマルチテナント・アーキテクチャを中心にご紹介します。今回は「マルチテナント・アーキテクチャの基礎」について選択式の問題を解きながら詳しく解説していきます。

それでは早速サンプル問題を確認していきましょう。

問題:マルチテナント・コンテナデータベース(CDB)に関する説明で正しいものを選択してください
(2つ選択してください)。

  1. バックグラウンド・プロセスはCDB$ROOTと各PDB間で常に共有されるリソースである
  2. UNDO表領域は常に共有されるリソースである
  3. オンラインREDOログは各PDB間で独自に作成できるリソースである
  4. SYSTEM表領域はCDB$ROOTのみに存在するリソースである
  5. 一時表領域は各PDB内で作成・使用することができるリソースである

 

(解説)

それでは解説していきましょう。この問題の正解を選択できるようになるためには、マルチテナント構成の基本を理解していることが重要になります。今回はこのマルチテナント構成について詳しく解説を行いますので、従来のデータベースとの違いや、マルチテナントについてうろ覚えの方、まだよく理解していない方は今回の解説内容で確実に理解していきましょう。

マルチテナント・アーキテクチャはOracle Database 12cから出てきた機能になり、次のLong Term ReleaseであるOracle Database 23cでは必須構成(従来型のデータベースはサポート対象外)になります。これからはCloud上で使用することも増えてくると思いますのでマルチテナントの知識は非常に重要になるということですね。

ではまず、基本中の基本の確認ということで、従来のデータベース構成(~11g)とマルチテナント構成の「データベース」と「インスタンス」(※)の関係性について比較をしたいと思います。今後、従来型のデータベースのことを非CDB、マルチテナント構成のことをCDBと表現していきます。「CDB」はコンテナ・データベースの略ですね。以下のイメージ図を確認してください。

(※) 本コンテンツはGoldレベルを対象としているため「データベース」と「インスタンス」違いについての詳しい解説は割愛いたします。

いかがでしょうか。従来の非CDB構造であっても、CDB構造であっても「データベース」と「インスタンス」の関係は同じですね。どちらもデータベースに対して管理するためのインスタンスが紐づいているという形です。「マルチテナント・コンテナ・データベースだから・・データベースが複数存在していて、紐づいているインスタンスも沢山ある??」と、いうような勘違いをしている場合はここで解消しておきましょう。

では、CDBの環境は従来の非CDBと比べて何が異なるのでしょうか?CDB構造のコンテナ・データベースの部分をもう少し詳細に示した図を次に紹介します。

コンテナ・データベース内に「CDBルート」「CDBシード」「PDB(SALES)」「PDB(HR)」という資源がありますね。これらが「コンテナ」に該当し、各コンテナはコンテナ・データベース内で独立した資源となっています。顧客データを格納するコンテナに相当するのがPDBと記載があるコンテナで、非CDBのときに扱っていたデータベースと置き換えていただいて問題ありません。このPDBのことをプラガブル・データベースといいます。PDBの右にカッコでSALESとかHRとかありますがPDBに任意で名前を付けたものだと思ってください。CDBルートはコンテナ・データベース全体を管理するコンテナで、CDBシードはPDBを新規作成する際にテンプレートとして使用するコンテナになります。インスタンス、制御ファイル、オンラインREDOログは各コンテナで共有できるリソースとなり、コンテナ・データベース内で効率よく使用することができます。このように複数のデータベース資源を単一のコンテナ・データベース(CDB)の中に集約して管理し、また各コンテナで共有できるリソースを効率的に利用することができる、これがマルチテナント・アーキテクチャの機能になります。

説明の文章が続きましたが、「うーん、難しいな。」と思う方は身近なものに喩えて考えると理解しやすいと思いますので1つ例を挙げてみましょう。

従来の非CDB構成を「商店街通りの各店舗」だと思ってください。例えば商店街に「本屋さん」「お花屋さん」「ゲームショップ」などの各店舗があったとします。それぞれの店舗は独立して存在しており、各店舗で必要なものは各自すべて揃える必要があります。以下のようなイメージです。

 

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

先ほど紹介した「商店街通りの各店舗」が「駅ビル」にテナントとして入ったと考えてください。駅ビルの場合、お店固有の必要な資源は準備する必要がありますが、ビルの出入り口、通路、階段やエスカレータといったビル内で共有できるリソースは自前で準備する必要はありません。本屋であれば本棚と書籍のみ準備すればいいというイメージです。この駅ビルの各テナントが「プラガブル・データベース(PDB)」と考えると分かりやすいかと思います。そして駅ビル内の共有できる資源が「インスタンス」「制御ファイル」「オンラインREDOログ」と置き換えていただくといいでしょう。

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

 

あくまでイメージなので少し乱暴な部分もあると思いますが、理解しやすくするという意味で「商店街通りの各店舗 ≒ 非CDB」「駅ビル ≒ CDB」と喩えてみました。もっと別のものでイメージが近いものがあるのであれば是非皆さんも何か身近なものに喩えて覚えておくと理解が深まるのではないかと思います。

それではマルチテナント構成についての概要が理解できたところで、問題の選択肢を解説していきましょう。

選択肢1は、CDB構造の「データベース」と「インスタンス」のところで解説した内容や駅ビルの共有リソースの話を思い出してください。正しい内容になります。

選択肢2と3は駅ビルの共有リソースの内容を確認すればどちらの選択肢も誤りであることが分かりますが、UNDO表領域については追加で説明をしておきましょう。UNDO表領域はOracle Database 12.1までは共有リソースの資源でした。これを「共有UNDOモード」と言います。Oracle Database 12.2からはCDB内のすべてのコンテナが自前のUNDO表領域を持つことができるようになっており、これを「ローカルUNDOモード」といいます。ローカルUNDOモードであれば様々な新機能(ホットクローン、PDB再配置、プロキシPDBなど)が使用できるので現状はローカルUNDOモードで運用するのが一般的です。選択肢2は「・・常に共有されるリソースである」とありますので誤りということですね。

選択肢4は誤りになります。SYSTEM表領域は各PDBにも存在しています。PDB内のSYSTEM表領域には、ユーザーがそのPDB内で作成したオブジェクトのメタ・データなどを管理しています。これも駅ビルの喩えで考えていただくとよいと思うのですが、本屋の在庫や売り上げ情報などは本屋のテナント内で管理をしていますよね。決して駅ビルの管理ルームで管理することはないと思います。

選択肢5は正しい内容です。一時表領域は各PDBで作成、利用することが可能です。

以上を踏まえまして正解は 1、5 になります。

正しい選択肢は選べたでしょうか?

今回はマルチテナント・アーキテクチャの基本的な部分を学習しましたが、先でも述べたとおりマルチテナント構成は、次のLong Term Releaseである23cでは必須構成となり確実に必要な知識となってきます。どのような分野でも基礎を学習することは非常に重要ですので、基本をしっかりと押さえたうえで着実にステップアップしていってください。今回の講義はこれまでとします。お疲れ様でした。

————————————————- 

ORACLE MASTER Gold DBA 2019 のご紹介

【ORACLE MASTER Gold DBA 2019 試験トピック解説講座】トピック一覧

————————————————-

その他の ORACLE MASTER 試験トピック解説講座シリーズ:

【Oracle University 講師による ORACLE MASTER Silver SQL 2019 試験トピック解説講座】-トピック一覧-

————————————————-