OracleのCDB起動時後にPDBも同時に自動起動する方法をおしえて下さい。
こんにちはユキトモです。
今回は、OracleのPDBの自動起動を解説していきます。
PDB自動起動
Oracle12c R1ではCDBを起動してもデフォルトではPDBは自動起動されませんでした。
バッチやシェルで起動するコマンドを用意する必要がありました。
Oracle12.1.0.2以降はコマンドで起動状態を制御することが可能になりました。
PDB自動起動の設定
1.CDBを起動
2.PDBが起動していないことを確認
3.PDBを自動起動するコマンドを実行
4.CDBを再起動してPDBの起動状態を確認
 
SQL*Plusでローカルへ接続
SQL*Plusでローカルへ接続してSYSDBA権限でOracleインスタンス ORCLCDB に接続します。
ログイン
 
[root@localhost ~]# su - oracle
[oracle@localhost ~]$ export ORACLE_SID=ORCLCDB
[oracle@localhost ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 19.0.0.0.0 - Production on 木 12月 30 16:01:36 2021
Version 19.3.0.0.0
 
Copyright (c) 1982, 2019, Oracle. All rights reserved.
 
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
に接続されました。
 
CDBを起動
PDBの自動起動の設定には対象のPDBをオープン状態にします。
  --PDBを確認 SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 MOUNTED   --OPEN MODEが「MOUNTED」の場合はPDBは停止しているので --PDBを起動します。 SQL> ALTER PLUGGABLE DATABASE orclpdb1 OPEN;   プラガブル・データベースが変更されました。
 
PDBを自動起動するコマンドを実行
「save state」で自動起動を設定します。
自動起動設定 --PDB名を指定すると個別のPDBが対象になります。 --複数同時に設定する場合はカンマ区切りで指定します。 SQL> ALTER PLUGGABLE DATABASE orclpdb1,orclpdb2 SAVE STATE;   --allを指定すると全てのPDBが対象になります。 ----筆者の環境はPDBが1つなので下記のコマンドで設定して行きます。 SQL> ALTER PLUGGABLE DATABASE ALL SAVE STATE;   プラガブル・データベースが変更されました。
「ALTER PLUGGABLE DATABASE ALL SAVE STATE;」は現在のPDBの起動状態を保存するコマンドです。
なので自動起動させたいPDBが停止している状態で実行しても自動起動とはなりません。
起動している状態でコマンドを実行して下さい。
 
CDBを再起動起動してPDBの起動状態を確認
PDBの状態確認 --PDBを停止します。 SQL> ALTER PLUGGABLE DATABASE orclpdb1 CLOSE;   プラガブル・データベースが変更されました。   --CDBを停止します。 SQL> SHUTDOWN IMMEDIATE   --CDBを起動します。 SQL> STARTUP   --PDBの状態を確認します。 SQL> SHOW PDBS   CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 READ WRITE NO   --起動していることが確認できました。
 
手動起動に戻すには
手動に戻す --CDB起動時PDBはMOUNTED状態にするには --「discard state」を指定します。 SQL> ALTER PLUGGABLE DATABASE ORCLPDB1 DISCARD STATE;   プラガブル・データベースが変更されました。   --CDBを再起動して確認してみます。 SQL> ALTER PLUGGABLE DATABASE orclpdb1 CLOSE;   プラガブル・データベースが変更されました。   --CDBを再起動します。 SQL> SHUTDOWN IMMEDIATE   SQL> STARTUP   --PDBの状態を確認します。 SQL> SHOW PDBS   CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 ORCLPDB1 MOUNTED --PDBが「MOUNTED」であることが確認できました。  
 
除外設定
「except PDB名」で除外設定も可能です。
除外設定 --指定したPDB以外は自動起動に設定する場合 SQL> ALTER PLUGGABLE DATABASE ALL EXCEPT orclpdb1 SAVE STATE;