PDBのオープンモードの保持設定方法とは?〜Oracleマルチテナント環境での基本操作〜

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

Oracleのマルチテナント環境では、PDB(Pluggable Database)はデフォルトではCDB(Container Database)再起動時に自動でOPENされません。本記事では、PDBのオープンモードを保持する方法をわかりやすく解説します。

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

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


🔸 なぜPDBは再起動後にCLOSEされるのか?

OracleではCDBを起動しても、PDBは「MOUNTED」状態で止まっており、明示的に ALTER PLUGGABLE DATABASE pdb_name OPEN を実行する必要があります。

特に業務システムで常に接続可能なPDBが必要な場合は、自動でOPENされる設定が望ましいです。


🔸 PDBのオープンモードを保持するには?

PDBの状態を永続的に保持するためには、SAVE STATEオプションを使用します。


✅ 手順:PDBのオープン状態を保持する設定

以下の手順で設定を行います。

1. CDB$ROOT に接続する

SQL> CONNECT / AS SYSDBA

2. 対象PDBをOPENする

SQL> ALTER PLUGGABLE DATABASE pdb01 OPEN;

3. オープン状態を保存する

SQL> ALTER PLUGGABLE DATABASE pdb01 SAVE STATE;

これで、次回CDB起動時に pdb01 は自動的に OPEN モードで起動されます。


✅ 複数PDBの状態を一括保存するには?

SQL> ALTER PLUGGABLE DATABASE ALL SAVE STATE;

特定のPDBを除外したい場合は、手動でOPENして個別に SAVE STATE してください。


✅ 設定の確認方法

保存された状態は、以下のビューで確認できます。

SQL> SELECT PDB_NAME, STATE FROM DBA_PDB_SAVED_STATES;
PDB_NAMESTATE
PDB01OPEN

STATEOPEN であれば、自動でOPENされる設定が保存されています。


🔄 状態の解除(SAVE STATEのリセット)

もし自動OPENを無効にしたい場合は以下のようにします。

SQL> ALTER PLUGGABLE DATABASE pdb01 DISCARD STATE;

🔸 イメージ図で理解する:CDB再起動後の挙動

┌────────────┐
│ CDB起動 │
└────┬───────┘


┌──────────────────┐
│ PDB01(OPEN済) │←─ SAVE STATE 設定済
└──────────────────┘
┌──────────────────┐
│ PDB02(MOUNTED) │←─ SAVE STATE 未設定
└──────────────────┘
[oracle@v19single ~]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 木 5月 1 11:22:17 2025
Version 19.21.0.0.0

Copyright (c) 1982, 2022, Oracle. All rights reserved.

アイドル・インスタンスに接続しました。

SQL> startup ★起動
ORACLEインスタンスが起動しました。

Total System Global Area 1610609864 bytes
Fixed Size 9163976 bytes
Variable Size 385875968 bytes
Database Buffers 1207959552 bytes
Redo Buffers 7610368 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 MOUNTED ★停止している
5 PDB02 MOUNTED ★
SQL> alter pluggable database pdb01 open; ★PDB01 を起動

プラガブル・データベースが変更されました。

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO
5 PDB02 MOUNTED
SQL> alter pluggable database pdb01 save state; ★オープンモードを保持設定

プラガブル・データベースが変更されました。

SQL> set lin 1000 pages 1000
SQL> col con_name for a20
SQL> col state for a20
SQL> select con_id,con_name,state from dba_pdb_saved_states;

CON_ID CON_NAME STATE
---------- -------------------- --------------------
3 PDB01 OPEN

SQL> shu immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup
ORACLEインスタンスが起動しました。

Total System Global Area 1610609864 bytes
Fixed Size 9163976 bytes
Variable Size 385875968 bytes
Database Buffers 1207959552 bytes
Redo Buffers 7610368 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO ★自動で起動している
5 PDB02 MOUNTED
SQL>

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

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


🔍 注意点

  • SAVE STATE は Oracle 12.1.0.2以降でサポートされています。
  • Oracleの再起動(CDBの再起動)時にのみ有効です。PDB単独での操作には影響しません。
  • SAVE STATESPFILE管理下で有効です。

✍️ まとめ

操作コマンド例
PDBのOPENALTER PLUGGABLE DATABASE pdb01 OPEN;
OPEN状態の保持(SAVE)ALTER PLUGGABLE DATABASE pdb01 SAVE STATE;
OPEN状態の解除(DISCARD)ALTER PLUGGABLE DATABASE pdb01 DISCARD STATE;
設定状況の確認SELECT * FROM DBA_PDB_SAVED_STATES;

Oracleマルチテナント環境では、PDBの状態管理が運用の鍵を握ります。SAVE STATEを活用して、CDB起動時の手間を省き、安定した運用を目指しましょう。

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

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

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

コメント

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