マルチテナント・アーキテクチャで構成されたデータベースには、従来のOracleデータベースにはなかった、マルチテナント・アーキテクチャ特有の概念がいくつかあります。これらのうち、ユーザーが最低限押さえておくべきポイントについて説明します。
CDBはCDB$ROOT、PDB$SEED、PDBという3種類のコンテナから構成されています。コンテナはマルチテナント・アーキテクチャに含まれるデータベースにおおむね相当すると考えてください。
CDB$ROOT(ルート)
PDB$SEED(シード)
PDB(プラガブル・データベース)
CDBの基盤となるコンテナはCDB$ROOTです。CDBに対してローカル接続すると自動的にCDB$ROOTに接続されます。
なお、直接PDBにローカル接続はできません。PDBへローカル接続したい場合は、CDBにローカル接続した後、「ALTER SESSION SET CONTAINER...」コマンドを使用して、接続先のコンテナを切り替えます*。
*リモート接続における接続先コンテナの指定方法は後述します。
マルチテナント・アーキテクチャでは、1つのインスタンス内に複数のコンテナが存在する構成になっています。すなわち、インスタンスが提供するメモリやバックグラウンドプロセスなどのリソースを複数のコンテナで共有する形になります。また、データベースの構成ファイルについてもREDO、UNDOなどの一部については、複数のコンテナで共有する形になります。
従来のインスタンス構成と同様に、SGAやPGAなどのインスタンスが使用するメモリのサイズは初期化パラメータで設定します。インスタンスが割り当てたメモリは各コンテナで共有して使用されます。特定のPDBに多くのメモリを割り当てるといった設定はできません。
バックグラウンドプロセスについても、初期起動数、最大起動数や動作特性などは従来のインスタンス構成と同様に初期化パラメータで設定し、各コンテナで共有して使用されます。
次に、データベースの構成ファイルについてですが、SYSTEM、SYSAUX、TEMP、USERS表領域は各コンテナが固有の表領域を持ちます。すなわち、1つのPDBを含むCDBには、CDB$ROOT、PDB$SEED、PDBに含まれる3つのSYSTEM表領域に存在する形になります。なお、SYSTEM表領域のサイズを確認すると、PDBのSYSTEM表領域はCDB$ROOTのSYSTEM表領域よりもサイズが小さくなっていることが分かります。これはデータベース共通のデータがCDB$ROOTのSYSTEM表領域にのみ格納されており、PDBのSYSTEM表領域の領域を占有していないことからきていると思われます。
一方で、オンラインREDOログファイル、UNDO表領域はCDB$ROOTの構成要素と位置付けられており、PDBにはオンラインREDOログファイル、UNDO表領域が割り当てられません。
マルチテナント・アーキテクチャではローカル・ユーザーと共通ユーザーの2つのユーザータイプが存在します。
ローカル・ユーザー
共通ユーザー
それぞれのユーザーに割り当てる権限を細かく管理したい場合は、ユーザーが独自に共通ユーザーを作成し、適宜適切な権限を割り当てるような使用形態が想定されます。逆に、特に権限を細かく管理する必要がなければ、デフォルトで作成済みの共通ユーザー、SYS、SYSTEMを使用して、特に共通ユーザーを作成しないような形になるでしょう。
Oracle Database 12c R1から、「CDB_」で始まるデータディクショナリ・ビューが追加されました。従来の「DBA_」ディクショナリ・ビューでは、接続しているコンテナの情報のみが確認できますが、「CDB_」ディクショナリ・ビューでは、CDB内にある各コンテナの情報をまとめて確認きます。ただし、以下の点に注意してください。
次に記載するコマンド結果*は、各コンテナの表領域名を確認するために、CDBからCDB_TABLESPACESビューを参照したものです。
SQL> SHOW PDBS CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB1 READ WRITE NO 4 PDB2 READ ONLY NO 5 PDB3 MOUNTED <== OPENしていない SQL> SELECT CON_ID,TABLESPACE_NAME FROM CDB_TABLESPACES ORDER BY 1,2; CON_ID TABLESPACE_NAME ---------- ------------------------------ 1 SYSAUX 1 SYSTEM 1 TEMP 1 UNDOTBS1 1 USERS 2 SYSAUX 2 SYSTEM 2 TEMP 3 SYSAUX 3 SYSTEM 3 TEMP 3 USERS 4 SYSAUX 4 SYSTEM 4 TEMP 4 USERS 16行が選択されました。
* CON_IDは各PDBに割り当てられる一意の値です。CON_ID 1はCDB$ROOT、CON_ID 2はPDB$SEEDと値が固定され、作成されたPDBの順に3以降の値が割り当てられます。
Copyright © ITmedia, Inc. All Rights Reserved.