How to open the Pluggable databases (PDBs) automatically in read write mode when container database (CDB) restarts

 

Note: Generally, Container database won't let open all PDBs in READ-WRITE mode after each database restarts and to make all the PDBs to open in READ-WRITE mode we need to create a trigger to achieve this.


Method-1: Using SAVE STATE option

SQL> shut immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 1593835520 bytes

Fixed Size                  8793256 bytes

Variable Size             956302168 bytes

Database Buffers          620756992 bytes

Redo Buffers                7983104 bytes

Database mounted.

Database opened.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

         2 PDB$SEED                       READ ONLY  NO

         3 PDB1                           MOUNTED   ---------- all are in MOUNTED state after db restarts

         4 PDB2                           MOUNTED

         5 PDB5                           MOUNTED

         6 PDB3                           MOUNTED

         7 PDB4                           MOUNTED

SQL> alter pluggable database all open;   --- open all PDBS in read write mode

Pluggable database altered.


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

         5 PDB5                           READ WRITE NO

         6 PDB3                           READ WRITE NO

         7 PDB4                           READ WRITE NO

SQL> --- save the state

SQL>  alter pluggable database all save state;

Pluggable database altered.


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

         5 PDB5                           READ WRITE NO

         6 PDB3                           READ WRITE NO

         7 PDB4                           READ WRITE NO

SQL> --- restart the database to check the PDBs state

SQL> shut immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 1593835520 bytes

Fixed Size                  8793256 bytes

Variable Size             956302168 bytes

Database Buffers          620756992 bytes

Redo Buffers                7983104 bytes

Database mounted.

Database opened.

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED

---------- ------------------------------ ---------- ----------

         2 PDB$SEED                       READ ONLY  NO

         3 PDB1                           READ WRITE NO   ----- all PDBs are in READ WRITE mode

         4 PDB2                           READ WRITE NO

         5 PDB5                           READ WRITE NO

         6 PDB3                           READ WRITE NO

         7 PDB4                           READ WRITE NO



Method-2: Using database trigger

SQL> CREATE OR REPLACE TRIGGER pdb_auto_startup AFTER STARTUP ON DATABASE
  2  BEGIN
  3  EXECUTE IMMEDIATE 'alter pluggable database all open';
  4  END pdb_auto_startup;
  5  /

Trigger created.

How to see which container you are logged in:

SQL>  show con_name
CON_NAME
------------------------------
PDB1


Comments

Popular posts from this blog

Auditing in Oracle database

rs.stepDown() in MongoDB replication

Tuples in Python