【Oracle Database 26ai / 運用管理】安全かつ確実に行う!Oracle Database 26ai のシャットダウン手順とモード別の違い
データベースの運用管理において、起動と同じくらい重要なのが「正しいシャットダウン手順」の把握である。
マルチテナント・アーキテクチャを採用している Oracle Database 26ai では、コンテナデータベース(CDB)とプラガブルデータベース(PDB)の関係性を理解しておく必要がある。
今回は、日常運用で基本となるCDB全体の安全なシャットダウン手順と、コマンドの違い、さらにPDB単体を個別に停止する手順について詳しく解説する。
1. シャットダウンの基本動作(CDBとPDBの関係)
Oracle 26ai(Free版など)では、親である管理領域 CDB$ROOT に接続して停止コマンドを1つ実行するだけで、配下の子DB(FREEPDB1など)も含めて自動的に安全にクローズ・停止される。
わざわざ子DBを1つずつ個別に停止しにいく必要はないため、基本は親のシャットダウン手順をマスターしておけばOKだ。
2. 全体停止(CDBのシャットダウン)手順
データベース全体を安全に停止する具体的な手順を確認していこう。
Step 1: OS環境変数の設定(起動時と同様)
作業を行うユーザー(通常は oracle ユーザー)でターミナルを開き、環境変数を正しく設定する。
# oracleユーザーに切り替え
su - oracle
# 環境変数の設定(※環境に合わせてパスを確認してください)
export ORACLE_SID=FREE
export ORACLE_HOME=/opt/oracle/product/26c/dbhomeFree
su - oracle
# 環境変数の設定(※環境に合わせてパスを確認してください)
export ORACLE_SID=FREE
export ORACLE_HOME=/opt/oracle/product/26c/dbhomeFree
Step 2: CDB$ROOTへの接続とシャットダウン実行
最高管理者権限(SYSDBA)で SQL*Plus に接続し、日常運用で最も安全で確実な SHUTDOWN IMMEDIATE を実行する。
# 1. SYSDBA(最高権限)で接続
sqlplus / as sysdba
# 2. シャットダウンの実行
SQL> SHUTDOWN IMMEDIATE;
sqlplus / as sysdba
# 2. シャットダウンの実行
SQL> SHUTDOWN IMMEDIATE;
【期待される出力結果】:
データベースがクローズされました。
データベースがアンマウントされました。
ORACLEインスタンスがシャットダウンされました。
データベースがアンマウントされました。
ORACLEインスタンスがシャットダウンされました。
この処理の裏で、PDB(FREEPDB1)の安全なクローズも自動的に行われるため、これで全体の停止作業は完了となる。
3. 【知識】なぜ「IMMEDIATE」をつけるのか?(シャットダウンモードの比較)
Oracleのシャットダウンにはいくつかのモードが存在する。運用における特徴を把握しておこう。
| モード名 | 特徴・挙動 | 実務での扱い |
|---|---|---|
| SHUTDOWN IMMEDIATE | 実行中のSQLをキャンセルし、未確定データをロールバックして安全に停止する。 | ★ 基本・推奨 |
| SHUTDOWN (NORMAL) | 全ユーザーが自発的にログアウトするまで永遠に待機するモード。 | 実務ではほぼ使用しない |
| SHUTDOWN ABORT | OSの電源を強制的に切るような強制終了。 | 緊急時・障害時のみ |
4. 【補足】PDB(FREEPDB1)「だけ」を停止したい場合
「親DB(CDB)全体は稼働させたまま、メンテナンスのために子DB(FREEPDB1)だけを一時的に止めたい」という場合は、以下の専用コマンドを実行する。
-- 1. 現在のPDBの状態を確認(OPENになっていることを確認)
SQL> SHOW PDBS;
-- 2. FREEPDB1 だけをクローズ(停止)する
SQL> ALTER PLUGGABLE DATABASE FREEPDB1 CLOSE IMMEDIATE;
-- 3. 停止後の状態確認
SQL> SHOW PDBS;
SQL> SHOW PDBS;
-- 2. FREEPDB1 だけをクローズ(停止)する
SQL> ALTER PLUGGABLE DATABASE FREEPDB1 CLOSE IMMEDIATE;
-- 3. 停止後の状態確認
SQL> SHOW PDBS;
まとめ
✔ 通常の停止は
✔ 部分的なメンテナンスでは
✔ 通常の停止は
CDB$ROOT に接続して SHUTDOWN IMMEDIATE; を実行するだけで、子DBも自動で安全に停止する。✔ 部分的なメンテナンスでは
ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE; を活用して柔軟に管理できる。PR