~SHOWコマンドやPDBの状態判定、一般ユーザー接続も徹底解説~
Oracle Database 12c以降で登場したマルチテナント構成(CDB+PDB)は、今やOracleデータベース運用のスタンダードです。この記事では、次のポイントを中心に、初心者にもわかりやすく、運用現場でも使える内容にまとめています。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
✅ この記事でわかること
- CDBとPDBの構成とは?
- CDBへの接続と起動・停止操作(SYSDBA)
- PDB(PDB01)への接続方法(SYSユーザー・一般ユーザー)
- SHOWコマンドによる状態確認方法
- PDBの状態:MOUNTEDは停止状態/READ WRITEは起動状態
🔷 1. CDBとPDBの構成を図解で理解しよう
【図1】CDBとPDBの構成イメージ(PDB01を例に)
+----------------------+
| CDB(cdb1) | ← Oracleインスタンス
+----------+-----------+
|
+-----+-----+
| |
+---+---+ +---+---+
| PDB01 | | PDB02 | ← 各業務用DB(Pluggable DB)
+-------+ +-------+
✅ 2. CDBへの接続と起動・停止方法(SYSDBA)
🔹 接続方法(Linux)
$ export ORACLE_SID=cdb1
$ sqlplus / as sysdba
🔹 起動・停止
-- CDBを起動
STARTUP;
-- CDBを停止
SHUTDOWN IMMEDIATE;
✅ 3. SHOWコマンドで現在の状態を確認する
🔹 現在の接続先(コンテナ)を確認:SHOW CON_NAME
SHOW CON_NAME;
CON_NAME
------------------------------
CDB$ROOT
✅ CDB$ROOT、PDB01など、自分が今どこにいるかがわかります。
--CDB に接続
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
--PDB に接続
SQL> show con_name
CON_NAME
------------------------------
PDB01
🔹 現在のPDB一覧と状態を確認:SHOW PDBS
SHOW PDBS;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 MOUNTED NO
⚠️ OPEN MODEが「MOUNTED」なら停止状態、「READ WRITE」なら起動状態です。
--PDB が停止している状態
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 MOUNTED ★
--PDB が起動している状態
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO ★
✅ 4. PDB(PDB01)への接続と操作方法
🔹 SYSDBAでの接続・切り替え・起動
-- CDBにSYSDBAで接続
sqlplus / as sysdba-- 起動(READ WRITE状態に)
ALTER PLUGGABLE DATABASE PDB01 OPEN;
-- 停止(MOUNTED状態に)
ALTER PLUGGABLE DATABASE PDB01 CLOSE IMMEDIATE;
-- PDB01に切り替え
ALTER SESSION SET CONTAINER = PDB01;
-- 再確認
SHOW CON_NAME;
SHOW PDBS;
--【補足】複数あるすべてのPDB を起動、停止ALTER PLUGGABLE DATABASE ALL OPEN;ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;
--PDB の起動/停止
[oracle@v19single ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on 日 4月 6 12:59:01 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 MOUNTED ★停止状態
SQL> alter pluggable database pdb01 open;
プラガブル・データベースが変更されました。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO ★起動状態
SQL> alter pluggable database pdb01 close immediate;
プラガブル・データベースが変更されました。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 MOUNTED ★停止状態
--PDB へ接続
[oracle@v19single ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on 日 4月 6 12:59:01 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT ★CDB に接続されている状態
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO
SQL> alter session set container=pdb01; ★PDB へ接続
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
PDB01 ★PDB に接続されている
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
✅ 5. 一般ユーザー(user1)でPDBに接続する方法
一般ユーザーは、基本的にリスナー経由でPDBに直接接続する必要があります。
sqlplus user1/password@pdb01_service
🔹 tnsnames.ora の設定例
<接続識別子> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <ホスト名orIPアドレス>)(PORT = <ポート番号>))
(CONNECT_DATA =
(SERVICE_NAME = <サービス名>)
)
)
--作成例PDB01_SERVICE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = PDB01)
)
)
✅
PDB01が READ WRITEで起動状態である必要あり。停止(MOUNTED)のままだと接続できません!
SQL> show user
ユーザーは"SYS"です。
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> alter session set container=pdb01;
セッションが変更されました。
SQL> show con_name
CON_NAME
------------------------------
PDB01
SQL> connect user1/user1
ERROR:
ORA-01017: invalid username/password; logon denied ★リスナー接続じゃないため接続できない
警告: Oracleにはもう接続されていません。
SQL> exit
[oracle@v19single ~]$ sqlplus user1/user1@PDB01_SERVICE★リスナー接続
SQL*Plus: Release 19.0.0.0.0 - Production on 日 4月 6 13:09:51 2025
Version 19.21.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> show user
ユーザーは"USER1"です。
SQL> show con_name
CON_NAME
------------------------------
PDB01 ★PDB に接続できている
✅ 6. PDBの自動起動設定(SAVE STATE)
ALTER PLUGGABLE DATABASE PDB01 SAVE STATE;
このコマンドを実行しておけば、次回CDB起動時にPDB01も自動で起動(OPEN)します。
✅ 状態確認&操作 早見表
| 操作 | コマンド例 | 備考 |
|---|---|---|
| 接続先の確認 | SHOW CON_NAME | CDB$ROOTかPDBか判断 |
| PDB一覧と状態確認 | SHOW PDBS | OPEN MODE = READ WRITE であれば起動中 |
| PDB起動 | ALTER PLUGGABLE DATABASE PDB01 OPEN | 状態が「READ WRITE」に |
| PDB停止 | ALTER PLUGGABLE DATABASE PDB01 CLOSE IMMEDIATE | 状態が「MOUNTED」に |
| 自動起動設定 | ALTER PLUGGABLE DATABASE PDB01 SAVE STATE | CDB起動時にOPENされる |
✅ 状態ごとのPDBの動作イメージ
【図2】PDBの状態イメージ
+---------+-----------------------------+
| 状態 | 説明 |
+---------+-----------------------------+
| MOUNTED | 停止状態(OPEN前) |
| | 一般ユーザーは接続不可 |
+---------+-----------------------------+
| READ WRITE | 起動状態(通常運用中) |
| | 読み書き可能/接続可能 |
+---------+-----------------------------+
| READ ONLY | 読み取り専用(例:PDB$SEED) |
+---------+-----------------------------+
✅ よくあるトラブルと対策
| 現象 | 原因 | 解決策 |
|---|---|---|
| user1で接続できない | PDBがMOUNTED状態 | SYSDBAでOPENしてから接続 |
| ORA-65011 | CDBでPDBの操作をした | ALTER SESSION SET CONTAINER = PDB01 |
| SHOW PDBSが使えない | SQL*Plus以外のツール | v$pdbsビューでも代替可能 |
🔚 まとめ
SHOW CON_NAMEで接続先を、SHOW PDBSでPDBの状態を確認!- PDBが「MOUNTED」なら停止中、「READ WRITE」なら起動中!
- 一般ユーザーは必ずリスナー経由で接続する
SAVE STATEで自動起動設定を忘れずに!
[参考]
4 CDBの作成および構成




コメント