>> 連載トップページに戻る

~オラクルDB担当エンジニア直伝~

ユージ&ギョータの実践データベース講座

Oracle Database 12cを使ってみよう

マルチテナント・アーキテクチャ編
第1回 プラガブル・データベースの作成

1.はじめに

Oracle Database 12cがリリースされ、OTNからもダウンロード可能になりました。
Oracle Database 12cには非常に多くの新機能が追加されていて、いろいろな所で紹介もされています。ですが、やはり実際に触って操作すると、より機能が理解できて、使い所もイメージしやすいのではないでしょうか。
そこで、これから数回に渡ってOracle Database 12cの代表的な新機能について、実際に動かしてどんな動きをするのかを確かめて行きたいと思います。
みなさんもぜひOracle Database 12cをインストールしていただき、一緒に実行して動きを確認してみてください。

本ガイドに記載している内容は、Oracle Database 12c Release 1の機能評価を手早く行うことを目的としています。システムおよびパッケージの開発や実行環境で使用する際には、関連ドキュメントを参照の上、実施してください。
また、本ガイドは単に情報として提供されるものであり、内容に誤りがないことの保障や弊社サポート部門へのお問い合わせはできませんのでご理解ください。

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

Oracle Database 12cで最も大きな機能追加が、“マルチテナント・アーキテクチャ”です。マルチテナント・アーキテクチャとは、マルチテナント・コンテナ・データベース(以降CDBと呼びます)と呼ばれるひとつのデータベースとそれに内包される、ひとつまたはそれ以上のプラガブル・データベース (以降PDBと呼びます)によって構成されます。PDBとはスキーマや表領域やデータのセットになります。

Oracleを含む従来のデータベース管理システムは、SQLの実行やトランザクションを管理するシステム部分と、いわゆるデータベースの部分がほぼ不可分でした。マルチテナント・アーキテクチャでは、CDBと呼ばれる部分がデータベース管理システム、PDBと呼ばれる部分が論理的なデータベースと言えます。


PDBはCDBにプラグすることで利用可能になります。PDBはユーザーやアプリケーションからは従来の(マルチテナント・アーキテクチャが採用されていない)データベースと同様に扱うことができます。CDBには複数のPDBをプラグすることができ、その結果、既存のスキーマやアプリケーションを変更することなく複数のデータベース環境を統合することが可能です。

マルチテナント・アーキテクチャでのPDBの利点には以下のようなものがあります。

  • データベースの新規作成やコピーといった新規環境構築の高速化
  • アンプラグ&プラグ操作による、既存データベースから新規プラットフォームへの移行の高速化
  • パッチ適用やアップグレード作業コストの削減
    • アップグレードやパッチ適用はCDBに対して行うため、多くのPDBがあった場合でも適用は一回のみ
    • 新しいバージョンのCDBへPDBを移動することにより、パッチ適用やアップグレードを実施
  • 高密度のデータベース集約

マルチテナント・アーキテクチャは、プライベート・データベース・クラウドの構築にも活用できます。企業内に複数存在する、個別に導入あるいは運用されてきたデータベース・サーバを集約し、自社内にデータベースのためのプライベート・クラウド環境を構築するというものです。
プライベート・データベース・クラウド環境構築の手法としてこれまで考えられてきたアプローチとしては、仮想化ソフトウェアを用いたサーバー仮想化によるサーバー統合や、Oracle Database 11g Release 2を用いた複数データベース環境におけるインフラストラクチャの統合、そして複数のスキーマを用いたインスタンスの統合といったものがあります。一般的に独立性を上げるとセキュリティとサービスレベルの確保が容易になる半面、オーバーヘッド増加、リソース共用率低下、管理コストの増加といったデメリットがあります。マルチテナント・アーキテクチャはPDBによる高いレベルの分離と、CDBによる高効率なリソース共有、管理工数削減を実現します。


3.Oracle Database 12cのインストールと、マルチテナント・コンテナ・データベース(CDB)の作成

それでは、Oracle Database 12cをインストールし、CDBを作成しましょう。

まずはここからOracle Database 12cをダウンロードしてください。

ダウンロードが完了しましたら、次にこちらのガイドに沿ってインストールとデータベース(CDB)の作成まで行って下さい。

ガイドに沿って、インストールとデータベースの作成まで完了すると、”PDB1”という名前のPDBが一つ含まれるCDBが作成されます。

 


4.SQL Developer 4.0のインストール

今回は、クライアントとしてSQL Developerの最新版4.0を使用します。
SQL Developer 4.0は、まだ正式にはリリースされていませんが、Early Adapterとして試用が可能です。こちらからダウンロードして、インストールしてください。

SQL Developerは、GUIでSQLを実行できるだけでは無く、データベース管理やモデリング、SQL実行状況の監視およびチューニングまで行えます。また、PL/SQLの開発ではコード補完やデバックが行える非常に便利で、いろいろ使えるツールです。


5.マルチテナント・コンテナ・データベース(CDB)への接続

それでは、CDBに接続してみましょう。

まずは、SQL Developerを起動します。
起動すると、以下のような開始ページ画面が表示されます。


次に接続を追加します。
画面左上の「接続」で右クリックをし、「接続の作成…」を選択します。


「データベース接続の作成/選択」画面がポップアップ表示されますので、以下のようにCDBへの接続情報を設定します。

接続名: CDB1 (任意の名前を指定します)
ユーザー名: sys (sysユーザーを指定します)
パスワード: データベース作成時に指定したsysユーザーのパスワードを指定します
パスワードの保存: 任意(選択した場合は、パスワードを保存します)
接続タイプ: 「基本」を選択します
ロール: 「SYSDBA」を選択します
ホスト名: データベースを作成したホストをホスト名またはIPアドレスで指定します
ポート 1521(リスナーのポート番号を指定します。通常は1521になります)
サービス名: 「サービス名」を選択し、CDBのサービス名を入力します(インストール・ガイドに従ってインストールした場合は、「orcl」になります。SID指定でも接続できますが、サービス名を指定して接続することをお勧めします)


入力後、下の「テスト」ボタンをクリックし、正常に接続できることを確認します(ステータス:成功となります)。
正常に接続できることを確認した後に、「接続」ボタンをクリックして、CDBに接続します。

次に「表示」メニューから、DBAを選択します。



左側にDBAビューが表示されるので、「接続」を右クリックし、「接続の追加…」を選択します。


「接続の選択」画面がポップアップ表示されるので、「Connection」に作成した接続「CDB1」を指定して、「OK」ボタンをクリックします。


DBAの接続が完了すると、DBAビューに「CDB1」が表示されるので、クリックして展開してみましょう。
すると、「コンテナ・データベース」が表示されると思います。この「コンテナ・データベース」をクリックすると、CDB内のPDBが表示されます。

これで、CDBへの接続とCDBを管理する準備ができました。


6.プラガブル・データベース(PDB)の作成

それでは、PDBを作成してみましょう。

PDBの新規作成は、既存のPDBをクローンして行います。
ここではデフォルトで用意されている空のPDBのPDB$SEEDをクローンして作成します。

まずは、DBAビューの「コンテナ・データベース」を右クリックし、「プラガブル・データベースの作成…」を選択します。

「プラガブル・データベースの作成」画面がポップアップ表示されるので、以下のように入力します。

データベース名: PDB2(任意の名前を入力します)
管理名:Admin(任意のPDB管理ユーザーの名前を入力します)
管理パスワード:任意のパスワードを入力します
記憶域: 無制限を指定します。PDB毎に使用する領域を制限できます。制限をする場合は、ここで最大サイズを指定します。
ファイル名の変換: カスタム名を選択し、新しいPDBのデータ・ファイルのファイル名を指定します。ここではターゲット・ファイルの3つのファイルについて、ファイルの場所を分かりやすくするために以下の様にディレクトリ名を”pdbseed”から”pdb2”に変更します。また、ファイル名から”.clone”を削除します。また、一時ファイルの名前をpdbseed_tmp01.dbfからpdb2_tmp01.dbfに変更します。


変更前:

/u01/app/oracle/oradata/orcl/pdbseed/system01.dbf.clone
/u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf.clone
/u01/app/oracle/oradata/orcl/pdbseed/pdbseed_temp01.dbf.clone


変更後:

/u01/app/oracle/oradata/orcl/pdb2/system01.dbf
/u01/app/oracle/oradata/orcl/pdb2/sysaux01.dbf
/u01/app/oracle/oradata/orcl/pdb2/pdb2_temp01.dbf


入力後、「SQL」タブをクリックして選択します。

SQLタブでは、実行されるSQLが表示され、編集が可能です。今回は、IDENTIFIED BY句の後ろにROLES句を追加します。
ROLES句を追加することにより、PDBの管理ユーザーにDBAロールを付与します。
PDBの管理ユーザーにはデフォルトでPDB_DBAロールが割当られます。しかし、PDB_DBAロールには、最初は権限が何も含まれていないためDBAロールをPDB_DBAロールに含めてPDBの管理を行えるように設定します。

編集前:


編集後 ( “ROLES=(DBA)”を追加):

SQLの編集後、「適用」ボタンをクリックして作成を実行します。

作成が完了すると、PDB2がDBAビューの「コンテナ・データベース」に追加されます


7.プラガブル・データベース(PDB)への接続

PDB2を作成しましたが、作成した段階ではまだPDB2はオープンされて無く、接続ができません。まずは、PDB2に接続できるようにPDB2をオープンします。

DBAビューからPDB2を右クリックし、「状態の変更…」を選択します。

「プラガブル状態の変更」画面がポップアップ表示されるので、「状態のオプション」に「READ WRITE」を選択し、「適用」ボタンをクリックします。

これで、PDB2に接続できるようになりました。

次にPDB2に接続します。
接続ビューで、「接続」を右クリックして「接続の作成…」を選択します。

「データベース接続の作成/選択」画面が表示されますので、以下のように入力します。

接続名: PDB2 (任意の名前を指定します)
ユーザー名: Admin
パスワード: Adminユーザーのパスワードを指定します。
パスワードの保存: 任意で選択(選択した場合は、パスワードを保存します)
接続タイプ: 「基本」を選択します。
ロール: 「デフォルト」を選択します。
ホスト名: データベースを作成したホストをホスト名またはIPアドレスで指定します。
ポート 1521(リスナーのポート番号を指定します。通常は1521になります)
サービス名: pdb2

入力後、「テスト」ボタンをクリックし、正常に接続できることを確認します。
正常に接続できた場合は、「接続」ボタンをクリックし、PDB2に接続します。


接続が完了すると、PDB2が「接続」ビューに表示されます。


PDB2に接続したら、試しにPDB2のワークシートからV$PDBSビューを検索してみましょう。
接続しているPDB2のみ情報が参照できると思います。


CDBに接続して同じようにV$PDBSビュー検索すると、全てのPDBの情報が参照できます。試してみて下さい。

その他のビューやユーザーを検索しても、PDB2に接続している場合は、PDB2の情報しか表示されないと思います。
このように、PDBに接続した場合に通常のデータベースに接続しているように見えるというのが、マルチテナント・アーキテクチャの特徴で、アプリケーションの移行がし易い理由です。


8.まとめ

今回はSQL Developerを使用してプラガブル・データベース (PDB) を作成し、接続できることを確認しました。
PDBの作成は、今までのデータベースの作成と比較すると容易に、そして素早くできたと思います。また、PDBに接続した時には、ほとんど通常のデータベースと同じように見えたのではないでしょうか。これらはマルチテナント・アーキテクチャの大きな特徴の一つです。

次回は、ユーザーの作成や表の作成など、PDBの基本的な管理操作を実施して、PDBの操作が通常のデータベースと同様に行えることを確認してみましょう。


第2回へ進む >>

>> 連載トップページに戻る