Oracle Database 12c プラガブル・データベースについて
文書番号:10105
プラガブル・データベースとは
Oracle Database 12c には マルチテナント・アーキテクチャという機能が追加されました。
マルチテナント・アーキテクチャについて詳しく書かれたサイトは既にたくさんありますのでここでは簡単な説明と、 使用するに際に最低限知らないと困ることをメモしておこうと思います。
「マルチテナント・アーキテクチャではマルチテナント・コンテナ・データベース(CDB)とそれに内包されるひとつまたはそれ以上のプラガブル・データベース(PDB)で構成されるもの。」
だそうです。
ざっくり言うとベースとなるデータベースの中に独立した複数のデータベースを持つことができる。と。
個人的には Hyper-V がイメージに近いかと思いました。
ホストOSの上で動作する複数の仮想ゲストを稼動させることができるイメージ。
ホストとゲストの関係性を考えるとVMwareよりHyper-Vかなと。(余計混乱したらすみません)
マルチテナント・アーキテクチャのポイントをいくつか。
- エンドユーザーはPDBへ直接アクセスすることができるので従来のデータベースと変わりない
→既存システムやアプリケーションは接続文字列を変更するだけで対応できる。 - データベースを集約できる(PDBひとつが従来のデータベース1つ)
→1サーバー1データベースの構成でリソースを持て余していた環境の場合、集約することで効率よくリソースを使用できる。 (サーバー仮想化のような考え方?)
- アンプラグ&プラグ操作で別のコンテナへ容易に移動できる
→サーバーのリプレースなど移行する際には新しいサーバーにコンテナ・データベースを構築するだけでさくっと移行できる。
(今回はメリットないけど次回以降はメリットになるよ。) - アップグレードやパッチの適用はCDBに対してのみ行うので作業は簡略化できる
→複数のデータベースを集約している場合、本来複数台に実施するはずのパッチの適用やアップグレードが1回で済むので作業コストを削減できる。
ただし、Standard Edition 2 ではプラガブル・データベースは1つだけ。(なので"集約"にはならない)
Enterprise Edithion では 252こ 作成可能
プラガブル・データベースの操作
データベースを起動したとき、コンテナ・データベース(CDB)は起動しますが、プラガブル・データベース(PDB)は起動しません。
データベースの起動後にオープンする必要があります。
- これまで通り、sysでアイドルインスタンスにログインし、「startup」したところ。
※ここではコンテナ・データベースにログインしている状態
クリックで拡大 - この状態だとCDBは起動したが、PDBはオープンしていないのでPDBにログインしようとするとエラーになる。
クリックで拡大 - 次のコマンドでPDBをオープンする。
rem PDBをオープンする alter pluggable database <PDB名> open; rem PDBをクローズする alter pluggable database <PDB名> close immediate;
クリックで拡大 - オープンしたら再度接続してみる。
クリックで拡大
PDB に接続する接続文字列の設定
「tnsnames.ora」ファイルに接続文字列を記述します。
元々存在しているCDBへ接続するための接続文字列をコピーして SERVICE_NAME の部分を変更します。
データベースをインストールした際にインストールウィザード内で指定した「プラガブル・データベース名」を指定します。
クリックで拡大
クリックで拡大
ログインしているデータベースを確認する
現在ログインしているのがCDBなのか、それともPDBなのか、どのPDBなのか(複数ある場合)を確認する方法です。
コンテナ・データベースにしないとき
コンテナ・データベース、プラガブル・データベースの構成は現時点(12.1.0.2の時点)で必須ではありません。
11g までと同様のコンテナ・データベースのない構成にすることもできます。