【Oracle 26ai運用管理】マルチテナント環境の基本!「Oracle AI Database 26ai」の正しい起動・停止とPDB自動起動設定
Oracle 12c以降のマルチテナント・アーキテクチャでは、インスタンスの土台となる親データベース(CDB)と、実際の業務データを格納する子データベース(PDB)の2階層構造を意識して起動・管理する必要がある。
今回は、Oracle AI Database 26ai Free環境を対象に、CDBおよびPDBの起動手順、トラブル時の対処法、そして運用の効率化に欠かせないPDBの自動起動設定(SAVE STATE)についてわかりやすく解説する。
1. はじめに(前提知識と構成)
現在のOracleマルチテナント・アーキテクチャは、親と子の2層構造になっており、起動操作を行う上で以下の2つの領域を意識する。
- CDB$ROOT(親DB / ルートコンテナ)
システム全体を統括・管理するための親領域(マンションの管理人室のようなもの)。Oracleを構築するとデフォルトで自動作成され、名前はCDB$ROOTで固定されている。起動などの全体管理は、基本的にこの領域に接続して行う。 - PDB(子DB / プラガブル・データベース)
実際に業務データやアプリケーションのデータが格納される領域(マンションの各部屋)。本環境では、FREEPDB1という名前のPDBが存在する。
親DB(CDB$ROOT)を
STARTUP する。適切な設定がされている場合、親を起動すると自動的に子DB(FREEPDB1)も起動(OPEN)し、すぐに利用可能な状態になる。2. 起動手順
Step 1: OS環境変数の設定
Oracleソフトウェアを管理するOSユーザー(通常は oracle)でターミナルにログインし、環境変数を設定する。
su - oracle
# 環境変数の設定(※環境に合わせて変更してください)
export ORACLE_SID=FREE # Oracle Free版のデフォルトSID
export ORACLE_HOME=/opt/oracle/product/26ai/dbhomeFree # 環境に応じたパス
Step 2: CDB$ROOT(親DB)への接続と起動
システム管理を行う親領域(CDB$ROOT)に最高管理者として接続し、土台となるCDBを起動する。
# ※自動的に親である「CDB$ROOT」に接続されます。
sqlplus / as sysdba
# 2. CDBの起動
SQL> STARTUP;
【期待される出力結果】
Total System Global Area 1603392928 bytes
Fixed Size 5027232 bytes
Variable Size 436207616 bytes
Database Buffers 1157627904 bytes
Redo Buffers 4530176 bytes
データベースがマウントされました。
データベースがオープンされました。
Step 3: PDB(子DB:FREEPDB1)の起動状態確認
親を起動したことで、子DBも一緒に起動しているか(利用可能か)を確認する。
【期待される出力結果】
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 FREEPDB1 READ WRITE NO
FREEPDB1 の OPEN MODE が 「READ WRITE(読み書き可能)」 になっていれば起動完了である。
3. 【トラブルシューティング】もしPDBが起動していなかった場合
何らかの理由で FREEPDB1 の OPEN MODE が MOUNTED(待機状態)になっていた場合は、以下のコマンドで手動起動する。
4. 【補足】PDB自動起動(SAVE STATE)の確認・設定・解除
Oracleでは、「CDB起動時にPDBも自動で起動させるかどうか」をPDBごとに記憶(保存)させることができる。実運用では非常に重要な機能となる。
① 自動起動が設定されているか確認する
現在、どのPDBに自動起動が設定されているかは、dba_pdb_saved_states ビューで確認できる。
SQL> SELECT CON_NAME, INSTANCE_NAME, STATE FROM DBA_PDB_SAVED_STATES;
-- 【実行結果の例(自動起動が有効な場合)】
-- CON_NAME INSTANCE_NAME STATE
-- ---------- -------------- ----------
-- FREEPDB1 FREE OPEN
※ CON_NAME に FREEPDB1 が表示され、STATE が OPEN になっていれば自動起動設定済み。行が何も返ってこない場合は未設定である。
② 自動起動を設定する(SAVE STATE)
PDBが起動(READ WRITE)している状態で以下を実行すると、現在の状態が記憶され、次回から親DBの起動と連動して自動起動するようになる。
SQL> ALTER PLUGGABLE DATABASE FREEPDB1 SAVE STATE;
-- すべてのPDBで自動起動を有効化する場合
SQL> ALTER PLUGGABLE DATABASE ALL SAVE STATE;
③ 自動起動を解除する(DISCARD STATE)
親DBを起動した際、PDBは自動起動させず MOUNTED(停止待機状態)のままにしておきたい場合は、保存された状態を破棄(解除)する。
SQL> ALTER PLUGGABLE DATABASE FREEPDB1 DISCARD STATE;
-- すべてのPDBの自動起動を解除する場合
SQL> ALTER PLUGGABLE DATABASE ALL DISCARD STATE;
✔ CDB起動(
STARTUP)後は必ず SHOW PDBS; で FREEPDB1 の状態をチェックする習慣をつけよう。✔ サーバー再起動時にPDBが停止したままになるのを防ぐため、構築完了時には
ALTER PLUGGABLE DATABASE FREEPDB1 SAVE STATE; を忘れずに実行しておこう。