CDB構成のOracleデータベースに接続・起動・停止する方法

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

~SHOWコマンドやPDBの状態判定、一般ユーザー接続も徹底解説~

Oracle Database 12c以降で登場したマルチテナント構成(CDB+PDB)は、今やOracleデータベース運用のスタンダードです。この記事では、次のポイントを中心に、初心者にもわかりやすく、運用現場でも使える内容にまとめています。

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

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


✅ この記事でわかること

  1. CDBとPDBの構成とは?
  2. CDBへの接続と起動・停止操作(SYSDBA)
  3. PDB(PDB01)への接続方法(SYSユーザー・一般ユーザー)
  4. SHOWコマンドによる状態確認方法
  5. 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)
)
)

PDB01READ 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_NAMECDB$ROOTかPDBか判断
PDB一覧と状態確認SHOW PDBSOPEN MODE = READ WRITE であれば起動中
PDB起動ALTER PLUGGABLE DATABASE PDB01 OPEN状態が「READ WRITE」に
PDB停止ALTER PLUGGABLE DATABASE PDB01 CLOSE IMMEDIATE状態が「MOUNTED」に
自動起動設定ALTER PLUGGABLE DATABASE PDB01 SAVE STATECDB起動時にOPENされる

✅ 状態ごとのPDBの動作イメージ

【図2】PDBの状態イメージ

+---------+-----------------------------+
| 状態 | 説明 |
+---------+-----------------------------+
| MOUNTED | 停止状態(OPEN前) |
| | 一般ユーザーは接続不可 |
+---------+-----------------------------+
| READ WRITE | 起動状態(通常運用中) |
| | 読み書き可能/接続可能 |
+---------+-----------------------------+
| READ ONLY | 読み取り専用(例:PDB$SEED) |
+---------+-----------------------------+

✅ よくあるトラブルと対策

現象原因解決策
user1で接続できないPDBがMOUNTED状態SYSDBAでOPENしてから接続
ORA-65011CDBで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の作成および構成

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

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

コメント

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