Oracle

【Oracle19c】PDBの自動起動の方法


 

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;

-Oracle
-, ,