CDB構成のユーザー管理とは?共通ユーザーとローカルユーザーの違い・作成・接続方法を徹底解説!

CDB/PDB(マルチテナント)

Oracleのマルチテナント構成(CDB + PDB)では、ユーザーの管理方法が従来の構成とは大きく異なります。
「共通ユーザー(common user)」と「ローカルユーザー(local user)」という2つの概念を理解することは、セキュアで柔軟なDB運用の第一歩です。

この記事では、ユーザーの種類・作成方法・接続方法の違いに加えて、COMMON_USER_PREFIX による共通ユーザー名のルールについてもわかりやすく解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


1. CDB構成におけるユーザーの種類

ユーザー種別説明
共通ユーザー(common user)CDB$ROOTで作成され、すべてのPDBに存在。CDB全体に対する管理用途にも使用される。
ローカルユーザー(local user)特定のPDB内でのみ使用できるユーザー。PDB単位で作成・運用される。

2. 図解:CDB構成とユーザーの所属イメージ

【図1】CDB構成におけるユーザーの構造

+------------------------------+
| CDB(cdb1) |
+------------------------------+
| CDB$ROOT |
| |- C##DBA(共通ユーザー) |
| |
| PDB1 |
| |- C##DBA(共通ユーザー) |
| |- HR(ローカルユーザー) |
| |
| PDB2 |
| |- C##DBA(共通ユーザー) |
| |- SALES(ローカルユーザー)|
+------------------------------+

3. 共通ユーザー作成ルールと COMMON_USER_PREFIX

共通ユーザーは、作成時に ユーザー名に特定のプレフィックスが必要です。このプレフィックスは、初期化パラメータ COMMON_USER_PREFIX によって定義されています。

🔸 現在の設定を確認するSQL

SHOW PARAMETER common_user_prefix

通常、初期値は以下の通りです:

NAME                 TYPE        VALUE
-------------------- ----------- ----------
common_user_prefix string C##

🔸 この設定が意味すること

  • 共通ユーザーは必ず C##(または c##)で始まる名前でなければならない
  • COMMON_USER_PREFIX は変更不可(データベース作成時に決定され、以降固定)

4. 共通ユーザーの作成方法(CDB$ROOT)

-- CDB$ROOT に接続して実行
CREATE USER C##COMMONUSER IDENTIFIED BY password
DEFAULT TABLESPACE users
QUOTA UNLIMITED ON users
CONTAINER=ALL;

GRANT CONNECT, CREATE SESSION TO C##COMMONUSER CONTAINER=ALL;

CONTAINER=ALL により、CDB全体(ROOTと全PDB)で使用可能な共通ユーザーになります。


5. 共通ユーザーの接続先と動作

共通ユーザーは、権限を与えていれば以下のように接続可能です:

接続先接続方法例
CDB$ROOTsqlplus C##COMMONUSER/password@//localhost:1521/cdb1
PDB1などsqlplus C##COMMONUSER/password@pdb1

🔸 接続先によって使用できるオブジェクトや操作範囲が変わるため、管理用途では明確に使い分けることが重要です。


6. ローカルユーザーの作成方法(PDB)

ローカルユーザーは、接頭辞なしの通常名で作成し、特定のPDB内でのみ使用されます。

-- PDBに接続して実行
CREATE USER hr IDENTIFIED BY hrpass
DEFAULT TABLESPACE users
QUOTA UNLIMITED ON users;

GRANT CONNECT, RESOURCE TO hr;

✅ 接頭辞 C## をつけてはいけません。つけるとエラーになります。


7. ユーザー種別の確認SQL(CDB環境)

SELECT username, common, con_id
FROM cdb_users
ORDER BY con_id, username;
項目説明
USERNAMEユーザー名
COMMONYES:共通ユーザー、NO:ローカル
CON_ID所属コンテナID(ROOT/PDB)

8. 共通ユーザー vs ローカルユーザー:違いまとめ

比較項目共通ユーザーローカルユーザー
作成場所CDB$ROOTPDB
接頭辞C## が必須(COMMON_USER_PREFIX に従う)不要(禁止)
接続可能な範囲CDB$ROOT + 任意のPDB作成したPDBのみ
権限付与CONTAINER=ALL で全体に有効標準の GRANT でPDB内に限定
代表的用途管理者ユーザー、CDB全体操作業務アプリ用ユーザー

まとめ

  • CDB構成では、ユーザーは共通ユーザーローカルユーザーに分かれる。
  • 共通ユーザーは COMMON_USER_PREFIX(デフォルトは C##)が名前に必要で、CDB全体で有効
  • ローカルユーザーは特定PDB内のみで使用され、アプリケーションユーザーとして適切。
  • 接続時は接続先(CDB or PDB)に応じてユーザーを使い分ける必要がある。


[参考]
4 CDBの作成および構成

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました