ワダです。
前回記事では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」ウィンドウで「コンテナ・データベース」を右クリック「プラガブルデータベースの作成」を選択する。
↓↓↓
管理名、管理パスワードを入力し、ファイル名の変換で「カスタム名」を選択する。
↓↓↓
「SQL」タブを選択するとこれから作成されるPDBをSQL文で確認できます。
1
2
3
4
5
6
7
8
|
CREATE PLUGGABLE DATABASE "PDB3" ADMIN USER "Admin_PDB3" IDENTIFIED BY "Pass"
FILE_NAME_CONVERT=(
'C:\APP\JOEY7\VIRTUAL\ORADATA\ORCL\PDBSEED\SYSTEM01.DBF', 'C:\APP\JOEY7\VIRTUAL\ORADATA\ORCL\PDB3\SYSTEM01.DBF',
'C:\APP\JOEY7\VIRTUAL\ORADATA\ORCL\PDBSEED\SYSAUX01.DBF', 'C:\APP\JOEY7\VIRTUAL\ORADATA\ORCL\PDB3\SYSAUX01.DBF',
'C:\APP\JOEY7\VIRTUAL\ORADATA\ORCL\PDBSEED\UNDOTBS01.DBF', 'C:\APP\JOEY7\VIRTUAL\ORADATA\ORCL\PDB3\UNDOTBS01.DBF',
'C:\APP\JOEY7\VIRTUAL\ORADATA\ORCL\PDBSEED\TEMP012019-03-03_14-16-06-446-PM.DBF', 'C:\APP\JOEY7\VIRTUAL\ORADATA\ORCL\PDB3\TEMP012019-03-03_14-16-06-446-PM.DBF'
)
STORAGE UNLIMITED TEMPFILE REUSE
|
PDBを作成後、tnsnames.oraにサービス名の定義を追加します。
場所:「【Oracleインストールフォルダ】\product\12.2.0\dbhome_1\network\admin\tnsnames.ora」
1
2
3
4
5
6
7
8
|
PDB3 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PDB3)
)
)
|
PDBをオープンします。
さっそく管理者ユーザー「Admin_PDB3」で一般DBユーザーやロールを作成したいところですが、この「Admin_PDB3」にはまだ権限を与えていないので何も操作できません。
まずはsysで接続します。
SQL Developer上でsysで接続するとコンテナ・データベース(CDB)に接続してしまうため、セッションを切り替える必要があります。
以下のように、「CDB$ROOT」になっているセッションを「PDB3」に切り替えます。
現在のセッションは「show con_name」で確認できます。
管理者ユーザー「ADMIN_PDB3」にロールとシステム権限を付与します。
■付与したロール、システム権限
ロール
・CONNECT
・RESOURCE
・DBA
(管理オプション付き(WITH ADMIN OPTION)で付与)
システム権限
・CREATE SESSION
・CREATE USER
・CREATE ROLE
・RESTRECTED SESSION(今回の環境ではこれを付与しないと接続時にエラーになりました)
SQL Developerの「接続」ウィンドウから、「接続の追加」でPDB3の管理者ユーザー「ADMIN_PDB3」の接続情報を入力し、PDB「PDB3」に接続します。
PDB3の管理者ユーザー「ADMIN_PDB3」で接続できたら、
前回記事の手順通りに、ユーザー作成、ロール作成、権限付与を行ってみます。
- ユーザー作成「USER01」「USER02」「USER03」)
-
ロール作成
-
ロールに権限付与
-
ユーザーにロールを付与
前回はコンテナDB(CDB)から操作していたためローカル(PDB)のユーザーやロールが見えない状態でした。
やむなく共通ユーザーや共通ロール(名称に「C##」のついた、CDBからも参照できる特殊なもの)を作成したのですが、
今回はローカルDB(PDB)に切り替えてから作業したことによって 従来のOracleと同じ感覚でユーザー作成からロール付与、権限付与まで行うことができました!
今回は以上です。