Oracle 12c PDB作成方法

posted in: Oracle | 0

ワダです。
前回記事ではOracle 12c上でデータベースユーザー作成、権限、ロールを付与する方法について書きました。

Oracle 12c以降は、11gまでと異なりマルチテナントアーキテクチャとなっています。
コンテナDB(CDB)1つに対し、複数のプラガブルデータベース(PDB)を抜き差しできるといったものです。
以下のサイトなどで基本を押さえておくと良いかもしれません。
(参考サイト https://www.ashisuto.co.jp/corporate/column/technical-column/detail/1197776_2274.html

今回はPDB作成を通して、あらためてOracle 12cでユーザ、権限、ロール等を扱う際のポイントを押さえたいと思います。

■環境

・OS
 Windows10 Pro ビルド番号 1903

・DBMS
 Oracle 12.2.0

・SQL Developer
 Oracle SQL Developer
 バージョン4.1.4.21

■前提

Oracle12cがインストール済み、コンテナデータベース(CDB)が作成済みであること。

■手順

SQL Developerを起動する。
「DBA」ウィンドウで「コンテナ・データベース」を右クリック「プラガブルデータベースの作成」を選択する。
pdb_image01

↓↓↓
管理名、管理パスワードを入力し、ファイル名の変換で「カスタム名」を選択する。
pdb_image02

↓↓↓
「SQL」タブを選択するとこれから作成されるPDBをSQL文で確認できます。

PDBを作成後、tnsnames.oraにサービス名の定義を追加します。
場所:「【Oracleインストールフォルダ】\product\12.2.0\dbhome_1\network\admin\tnsnames.ora」

PDBをオープンします。
pdb_image04

さっそく管理者ユーザー「Admin_PDB3」で一般DBユーザーやロールを作成したいところですが、この「Admin_PDB3」にはまだ権限を与えていないので何も操作できません。
まずはsysで接続します。
SQL Developer上でsysで接続するとコンテナ・データベース(CDB)に接続してしまうため、セッションを切り替える必要があります。

以下のように、「CDB$ROOT」になっているセッションを「PDB3」に切り替えます。
現在のセッションは「show con_name」で確認できます。
pdb_image06

管理者ユーザー「ADMIN_PDB3」にロールとシステム権限を付与します。
pdb_image08

■付与したロール、システム権限
ロール
・CONNECT
・RESOURCE
・DBA
(管理オプション付き(WITH ADMIN OPTION)で付与)

システム権限
・CREATE SESSION
・CREATE USER
・CREATE ROLE
・RESTRECTED SESSION(今回の環境ではこれを付与しないと接続時にエラーになりました)

SQL Developerの「接続」ウィンドウから、「接続の追加」でPDB3の管理者ユーザー「ADMIN_PDB3」の接続情報を入力し、PDB「PDB3」に接続します。

pdb_image10

PDB3の管理者ユーザー「ADMIN_PDB3」で接続できたら、
前回記事の手順通りに、ユーザー作成、ロール作成、権限付与を行ってみます。

  1. ユーザー作成「USER01」「USER02」「USER03」)
    pdb_image11

  2. ロール作成
    pdb_image12

  3. ロールに権限付与
    pdb_image13

  4. ユーザーにロールを付与
    pdb_image14

前回はコンテナDB(CDB)から操作していたためローカル(PDB)のユーザーやロールが見えない状態でした。
やむなく共通ユーザーや共通ロール(名称に「C##」のついた、CDBからも参照できる特殊なもの)を作成したのですが、
今回はローカルDB(PDB)に切り替えてから作業したことによって 従来のOracleと同じ感覚でユーザー作成からロール付与、権限付与まで行うことができました!

今回は以上です。

LINEで送る
Pocket