忍者ブログ
データベースエンジニアのための実践ブログ。Oracle・PostgreSQL・MySQLなどの環境構築、実行計画の読み方やチューニングといった現場で役立つノウハウ、DB基礎知識までを発信しています。

【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

Step 2: CDB$ROOTへの接続とシャットダウン実行

最高管理者権限(SYSDBA)で SQL*Plus に接続し、日常運用で最も安全で確実な SHUTDOWN IMMEDIATE を実行する。

# 1. SYSDBA(最高権限)で接続
sqlplus / as sysdba

# 2. シャットダウンの実行
SQL> SHUTDOWN IMMEDIATE;

【期待される出力結果】:

データベースがクローズされました。
データベースがアンマウントされました。
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;
まとめ
✔ 通常の停止は CDB$ROOT に接続して SHUTDOWN IMMEDIATE; を実行するだけで、子DBも自動で安全に停止する。
✔ 部分的なメンテナンスでは ALTER PLUGGABLE DATABASE CLOSE IMMEDIATE; を活用して柔軟に管理できる。
PR