ユージ&ギョータの実践データベース講座 ,
第1回目は、マルチテナント・コンテナ・データベース(以降CDB)の作成と、プラガブル・データベース(以降PDB)の作成を行い、接続できるところまで、確認しました。
マルチテナント・アーキテクチャの特徴の1つは、それぞれのPDBがあたかも今までのデータベースと同じ様にアクセスできて、操作できることです。第2回では、第1回で作成したPDBを操作して、表領域やユーザー、表の作成が今までのデータベースと同様にできるかを確認します。
本ガイドに記載している内容は、Oracle Database 12c Release 1の機能評価を手早く行うことを目的としています。システムおよびパッケージの開発や実行環境で使用する際には、関連ドキュメントを参照の上、実施してください。 また、本ガイドは単に情報として提供されるものであり、内容に誤りがないことの保障や弊社サポート部門へのお問い合わせはできませんのでご理解ください。
第1回で新規に作成したPDB2は、system表領域や、temp表領域など基本的な表領域しか作成されません。そこで通常はユーザーが使用する表領域を作成する必要があります。ここでは、USERS表領域をPDB2に作成します。
第1回の最後でビューを確認したように、PDB2のSQLワークシートからSQL文を実行して表領域を作成します。もしSQLワークシートを閉じてしまっていた場合には、「接続」ビューのPDB2を右クリックし、「SQLワークシート」をクリックして開いてください。
SQLワークシートが開いたら、以下のSQL文をSQLワークシート上で実行してUSERS表領域を作成します。 SQLワークシートでSQL文を実行するには、Ctrl+Enterを入力するか、 アイコンをクリックします。
CREATE TABLESPACE USERS
DATAFILE '/u01/app/oracle/oradata/orcl/pdb2/users01.dbf'
SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL AUTOALLOCATE;
(*ファイルのパスは、インストールした環境に合わせて変更してください)
SQL文が正常に実行されると、「スクリプトの出力」ビューに、表領域が作成されたメッセージが出力されます。 これで表領域の作成が行えました。
SQL Developerではユーザー作成などのデータベース管理者の操作は、SQL文を直接実行するだけではなく、DBAビューからGUIで行うことも可能です。 (第1回目では、PDBの作成をDBAビューから行いました)
ここでは、PDB2のデータベース管理操作を行うため、PDB2をDBAビューに追加し、そこからユーザーの追加を実行します。 PDB2の追加は、DBAビューの「接続」アイコンを右クリックし、新規作成を選択します。
「接続の選択」画面がポップアップ表示されますので、「Connection」から”PDB2”を選択して、「OK」ボタンをクリックします。
接続が作成されると、”PDB2”がDBAビューに追加され、表示されます。
次に、DBAビューに追加されたPDB2の「+」アイコンをクリックして展開します。「セキュリティ」から「ユーザー」を右クリックし、「新規作成」を選択します。
次に「ユーザー作成」画面がポップアップ表示されますので、ユーザー名に”hr”を入力し、任意のパスワードを入力します。また、デフォルト表領域には、先ほど作成した”USERS”表領域を指定します。
「付与されたロール」タブを選択し、“CONNECT”と”RESOURCE”を選択します。
「割当て容量」タブを選択し、USERS表領域の割当てを無制限に設定します。 最後に「適用」ボタンをクリックして、HRユーザーを作成します。
正常にHRユーザーが作成されると、以下のような画面がポップアップ表示されます。表示されましたら、「ユーザー作成」画面の「閉じる」ボタンをクリックして、ユーザー作成を終了します。
作成が完了すると、DBAビューの「ユーザー」に”HR”ユーザーが追加されます。
次に作成したHRスキーマに表を作成します。ここではEMP表を作成します。 表を作成するには、「接続」ビューからPDB2の「表」を右クリックし、「新規の表」を選択します。
「表の作成」画面がポップアップ表示されますので、「スキーマ」に”HR”を選択し、「名前」に”EMP”を入力します。 列は、ここではEMPNO列をNUMBERで、NAME列をVARCHAR2(20)で作成し、EMPNOをPK(主キー)に指定しています。 (列の追加は「+」のアイコンをクリックして行えます。また、主キーは「PK」をクリックして指定します) 指定後に「OK」ボタンをクリックして、表の作成を完了します。
表の作成が完了したら、HRユーザーとEMP表が作成されていることを確認してみましょう。
「接続」ビューの「その他のユーザー」を展開して、「HR」ユーザーを展開します。次に、HRユーザーの下の「表」を展開し、EMP表があれば表が正常に作成されています。
PDB2に作成した、HRユーザーの情報やEMP表の情報はCDBや他のPDB、例えばPDB1からは参照できません。
試しに、接続ビューからCDB1を展開して「他のユーザー」からHRユーザーやEMP表を探してみて下さい。HRユーザーやEMP表が見えないことが確認できると思います。 (または、CDB1のSQLワークシートからDBA_USERSビューなどから検索しても見えません) このように、PDBの情報が、他のPDBやCDBから隔離されていて参照できないというのが、セキュリティが高いマルチテナント・アーキテクチャの大きな特徴の一つです。
今回は、SQL Developerを使用してPDBに表領域を作成し、ユーザーと表の作成を行いました。今までのデータベースと全く同じ操作で行えることが確認できたと思います。
マルチテナント・アーキテクチャでは、データベース全体(CDB)を管理するデータベース管理者と、個々のPDBを管理する管理者の役割を分けることが可能です。
個々のPDBの管理者は今回実行したような表領域の作成やスキーマ・オブジェクトの作成など、ユーザー・データやアプリケーションの実行に必要なデータベース管理を行い、データベース全体(CDB)の管理者はバックアップやリソース割当て、PDBの作成などデータベースのシステム全体に関連する管理を行います。
逆に、PDBの管理者は、データベース全体に影響がある操作は行えないようになっています。これにより、データベース管理の共通部分を集約して管理コストを下げることが可能になり、また高いセキュリティも実現しているのが、マルチテナント・アーキテクチャです。
次回は、データベースの運用では必須になるPDBのバックアップ/リカバリについて試してみたいと思います。