alter pluggable database コマンドを実行する

マルチテナント環境では、PDB(プラガブルデータベース)が複数存在する場合があるため、
環境にあわせて起動停止コマンドオプションを使い分ける必要がある。



sysdba 権限でルートコンテナに接続

sqlplus / as sysdba

PDB起動

alter pluggable database all | PDB名 open コマンドを実行する。

全ての PDB を起動する(all を指定)

  • PDB の状態を確認
  • SQL> show pdbs
    
     CON_ID CON_NAME     OPEN MODE   RESTRICTED
    ------- ------------ ----------- ----------
         2  PDB$SEED     READ ONLY   NO
         3  PDB1         MOUNTED
         4  PDB2         MOUNTED
    

  • 全ての PDB をオープン
  • SQL> alter pluggable database all open;
    
    プラガブル・データベースが変更されました。
    

  • PDB の状態を確認
  • SQL> show pdbs
    
     CON_ID CON_NAME     OPEN MODE   RESTRICTED
    ------- ------------ ----------- ----------
         2  PDB$SEED     READ ONLY   NO
         3  PDB1         READ WRITE  NO
         4  PDB2         READ WRITE  NO
    
    補足
  • 先にオープンしている PDB があっても実行可能
  • PDB$SEED は PDB のテンプレートのため、オープンモードは常に読み取り専用のまま
  • 個別に PDB を起動する(PDB 名を指定)

  • PDB の状態を確認
  • SQL> show pdbs
    
     CON_ID CON_NAME     OPEN MODE   RESTRICTED
    ------- ------------ ----------- ----------
         2  PDB$SEED     READ ONLY   NO
         3  PDB1         MOUNTED
         4  PDB2         MOUNTED
    

  • PDB1 のみオープン
  • SQL> alter pluggable database PDB1 open;
    
    プラガブル・データベースが変更されました。
    

  • PDB の状態を確認
  • SQL> show pdbs
    
     CON_ID CON_NAME     OPEN MODE   RESTRICTED
    ------- ------------ ----------- ----------
         2  PDB$SEED     READ ONLY   NO
         3  PDB1         MOUNTED
         4  PDB2         READ WRITE  NO
    
    補足
  • 複数 PDB を指定するには、カンマ区切りで指定する
  • SQL> alter pluggable database PDB1, PDB2 open;
    

  • 特定の PDB を除外するには、except で指定する
  • SQL> alter pluggable database all except PDB2 open;
    

    この場合、PDB2 は対象外となり MOUNTED のまま。

  • 全てのPDBを強制オープンするには、force を指定する
  • SQL> alter pluggable database all open force;
    

    起動していたら内部的に一旦クローズ後にオープンされる。

    PDB停止

    alter pluggable database all | PDB名 close コマンドを実行する。

    全ての PDB を停止する(all を指定)

  • PDB の状態を確認
  • SQL> show pdbs
    
     CON_ID CON_NAME     OPEN MODE   RESTRICTED
    ------- ------------ ----------- ----------
         2  PDB$SEED     READ ONLY   NO
         3  PDB1         READ WRITE  NO
         4  PDB2         READ WRITE  NO
    

  • 全ての PDB をクローズ
  • SQL> alter pluggable database all close;
    
    プラガブル・データベースが変更されました。
    

  • PDB の状態を確認
  • SQL> show pdbs
    
     CON_ID CON_NAME     OPEN MODE   RESTRICTED
    ------- ------------ ----------- ----------
         2  PDB$SEED     READ ONLY   NO
         3  PDB1         MOUNTED
         4  PDB2         MOUNTED
    

    個別に PDB を停止する(PDB 名を指定)

  • PDB の状態を確認
  • SQL> show pdbs
    
     CON_ID CON_NAME     OPEN MODE   RESTRICTED
    ------- ------------ ----------- ----------
         2  PDB$SEED     READ ONLY   NO
         3  PDB1         MOUNTED
         4  PDB2         READ WRITE  NO
    

  • PDB2 のみクローズ
  • SQL> alter pluggable database PDB2 close;
    
    プラガブル・データベースが変更されました。
    

  • PDB の状態を確認
  • SQL> show pdbs
    
     CON_ID CON_NAME     OPEN MODE   RESTRICTED
    ------- ------------ ----------- ----------
         2  PDB$SEED     READ ONLY   NO
         3  PDB1         MOUNTED
         4  PDB2         MOUNTED
    
    補足
  • immediate オプションが指定可能
  • SQL> alter pluggable database all close immediate;
    SQL> alter pluggable database PDB名 close immediate;
    

    意味合いとしては従来の shutdown コマンドと同様。オプション無しは normal と同等で全セッションの切断を待つが、immediate なら、全セッションの切断を待たずに停止する。