Oracle RAC 26ai PDB srvctl管理ガイド:PDB起動・停止の新常識

26ai

Oracle Database 21c以降、srvctlコマンドでPDBを直接制御可能になりました。従来はSQL文が主流でしたが、本記事では「Oracle srvctl pdb」の実機ログを基に、26ai(AI Database)でも定着した「Oracle PDB 起動 停止」コマンドの手順を解説。CRSリソース管理により、RAC環境の運用が劇的に進化します。

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

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

結論:PDB管理の「最短手順チェックリスト」

強調スニペット対応の、実務で即座に使える操作リスト(やることリスト)です。

  1. 状態確認: /u01/app/23.0.0/grid/bin/crsctl stat res ora.<db>.<pdb>.pdb -t
  2. PDBの停止: srvctl stop pdb -db <db> -pdb <pdb>
  3. PDBの起動: srvctl start pdb -db <db> -pdb <pdb>
  4. 詳細確認: SQL*Plusで show pdbs を実行し同期状態を確認

背景と基礎:なぜ21cから「srvctl」管理が標準なのか

「データベース・インスタンスおよびクラスタ・データベースの管理」において、21cを境にPDBはGrid Infrastructure(GI)が直接監視・制御する「独立したクラスタリソース」へと格上げされました。

項目19c以前の標準21c / 23ai / 26ai の標準
制御コマンドSQL文 (ALTER PLUGGABLE...)srvctl start/stop pdb
CRSリソース化なし(サービスのみ登録)あり (ora.<db>.<pdb>.pdb)
管理単位CDBまたはサービス単位PDB単位での直接制御

19cまではCDB起動時にPDBを自動オープンさせるために SAVE STATE 句を利用していましたが、21c以降はGIがリソース状態を維持するため、よりOS親和性の高い、堅牢な運用が可能です。


手順・実装:PDBの状態確認と制御フロー

最新の26ai環境(バージョン 23.26.1)での実機ログに基づき、一連の挙動を確認します。

1. 前提条件の確認

  • 対象OS: Oracle Linux 8/9 (RAC構成)
  • バージョン: Oracle AI Database 26ai (実機: 23.26.1.0.0)
  • 権限: oracle ユーザー(GI/DB環境変数が設定済みであること)
  • 構成: CDB名 orcl / PDB名 pdb01

2. CRSリソースのステータス確認

21c以降、PDBを作成すると自動的にCRSリソースが作成されます。まずは現在の状態を確認します。

# グリッド・ホームのcrsctlを使用してPDBの状態を一括確認
/u01/app/23.0.0/grid/bin/crsctl stat res ora.orcl.pdb01.pdb -t

実行例:26ai実機での検証ログ(全行程)

状況A:初期状態(ONLINE)

PDBが全ノードで READ WRITE かつ ONLINE である状態です。ステータス詳細に STABLE と表示されます。

[oracle@rac-26ai1 ~]$ /u01/app/23.0.0/grid/bin/crsctl stat res ora.orcl.pdb01.pdb -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orcl.pdb01.pdb
1 ONLINE ONLINE rac-26ai1 READ WRITE,STABLE
2 ONLINE ONLINE rac-26ai2 READ WRITE,STABLE
--------------------------------------------------------------------------------
[oracle@rac-26ai1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on Fri Feb 13 19:47:41 2026
Version 23.26.1.0.0

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


Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO

状況B:srvctlによるPDBの停止

srvctl stop pdb を発行します。SQL*Plus側で個別にコマンドを打つ必要はありません。

[oracle@rac-26ai1 ~]$ srvctl stop pdb -db orcl -pdb pdb01
[oracle@rac-26ai1 ~]$ /u01/app/23.0.0/grid/bin/crsctl stat res ora.orcl.pdb01.pdb -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orcl.pdb01.pdb
1 OFFLINE OFFLINE MOUNTED,STABLE
2 OFFLINE OFFLINE MOUNTED,STABLE
--------------------------------------------------------------------------------

SQL*Plusでの同期確認:

[oracle@rac-26ai1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on Fri Feb 13 19:50:52 2026
Version 23.26.1.0.0

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


Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 MOUNTED

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

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

状況C:srvctlによるPDBの再起動

再び srvctl start pdb を実行して、クラスタ全体でオープンします。

[oracle@rac-26ai1 ~]$ srvctl start pdb -db orcl -pdb pdb01
[oracle@rac-26ai1 ~]$ /u01/app/23.0.0/grid/bin/crsctl stat res ora.orcl.pdb01.pdb -t
--------------------------------------------------------------------------------
Name Target State Server State details
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.orcl.pdb01.pdb
1 ONLINE ONLINE rac-26ai1 READ WRITE,STABLE
2 ONLINE ONLINE rac-26ai2 READ WRITE,STABLE
--------------------------------------------------------------------------------
[oracle@rac-26ai1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on Fri Feb 13 19:52:28 2026
Version 23.26.1.0.0

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


Connected to:
Oracle AI Database 26ai Enterprise Edition Release 23.26.1.0.0 - Production
Version 23.26.1.0.0

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO

トラブルシューティング:代表的なエラーと対処

状況原因対処方法
PRCD-1131 / 1120指定したPDBが存在しないかCDB停止srvctl status database でCDB稼働を確認
CRS-2674リソースの停止に失敗セッション残留時は stop pdb -force を検討
不整合の発生手動SQL操作による状態のズレsrvctl stop してから再度 start して同期

運用・セキュリティ上の注意点

管理操作の統一(不整合の防止)

21c以降の環境では、管理操作を srvctl に統一してください。

  • リスク: 手動のSQL文でPDBを閉じると、GIが「異常停止」と判断し、自動的に再起動(オープン)を試みることがあります。
  • メリット: RACの全ノードで一斉にPDBをオープン・クローズできるため、パッチ適用やバッチ処理時のオペレーションミスを激減できます。

FAQ:よくある質問

Q1. 21c以前のマニュアルには載っていないのですが?

A1. はい。srvctl start/stop pdbOracle Database 21c から導入されたコマンドです。19c以前のsrvctlには pdb オブジェクトが存在しないため実行できません。

Q2. 特定のノードだけPDBをオープンできますか?

A2. はい。-node <node_name> オプションを付加することで、指定したノードのみでの起動・停止制御が可能です。

Q3. シングル構成(非RAC)でも利用可能ですか?

A3. はい。Oracle Restart(スタンドアロン・サーバー用GI)が構成されていれば、21c以降で同様の管理が可能です。


まとめ

  • 21c以降srvctl start/stop pdb でPDBを直接一括制御できる。
  • CRSリソース化 により、PDB単位での死活監視・自動復旧が標準となった。
  • 26ai / 23ai 環境では、SQL文よりも srvctl による管理がベストプラクティスである。

本記事は Oracle Database 21c / 23ai / 26ai を対象に解説します(19c以前の環境では動作しません)。

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

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

コメント

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