Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

Firefox about:blank

dbaclass.com /article/how-to-open-the-pdbs-automatically-when-cdb-restarts/

How to open the PDBS automatically when CDB restarts


About AdminView all posts by Admin → ⋮

In oracle 12c , when we startup the CDB, the PDBS will be in MOUNTED stage. We need to open them manually using alter pluggable PDB
open. To make the PDBS open automatically, we can use the saved state option . This feature is available from Oracle 12.1.0.2 onwards

For more information about CDB and PDB , refer Oracle 12c multitenent architecture

DEMO:

1. Restart the container database:

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

SQL> shutdown immediate;


Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup
ORACLE instance started.

1 of 7 01-02-2022, 16:08
Firefox about:blank

Total System Global Area 1.4529E+10 bytes


Fixed Size 7649368 bytes
Variable Size 8489273256 bytes
Database Buffers 5939134464 bytes
Redo Buffers 93011968 bytes
Database mounted.
Database opened.

2. Check the status of PDBS:

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED


---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 MOUNTED
4 PDB2 MOUNTED
5 NONCDB MOUNTED

We can see the PDBS are in MOUNTED stage after starting CDB. Lets open them

3. Open the PDBS:

SQL> alter pluggable database NONCDB open;

Pluggable database altered.

SQL> alter pluggable database PDB1 open;

2 of 7 01-02-2022, 16:08
Firefox about:blank

Pluggable database altered.

SQL> alter pluggable database PDB2 open;

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 NONCDB READ WRITE NO

Now use save state command to save the states, so that next time ,when container db restarts, PDBs will in READ WRITE MODE automatically.

4. Save the PDB state:

SQL> alter pluggable database NONCDB save state;

Pluggable database altered.

SQL> alter pluggable database PDB1 save state;

Pluggable database altered.

SQL> alter pluggable database PDB2 save state;

Pluggable database altered.

3 of 7 01-02-2022, 16:08
Firefox about:blank

5. check the saved state in dba_pdb_saved_states

SQL> select con_name, state from dba_pdb_saved_states;

CON_NAME STATE
----------------------- --------------
NONCDB OPEN
PDB1 OPEN
PDB2 OPEN

6.Bounce the container database, to check the PDB state:

SQL> shutdown immediate;


Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1.4529E+10 bytes


Fixed Size 7649368 bytes
Variable Size 8489273256 bytes
Database Buffers 5939134464 bytes
Redo Buffers 93011968 bytes
Database mounted.
Database opened.

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED

4 of 7 01-02-2022, 16:08
Firefox about:blank

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


2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB2 READ WRITE NO
5 NONCDB READ WRITE NO

We can observed that PDBs are in READ WRITE mode automatically.

DISCARD STATE OPTION:

We can discard the saved state, so that next time CDB restarts, PDBs will start with MOUNT STATE only.
Lets discard state for PDB2 .

SQL> select con_name, state from dba_pdb_saved_states;

CON_NAME STATE
----------------------- --------------
NONCDB OPEN
PDB1 OPEN
PDB2 OPEN

SQL> alter pluggable database PDB2 discard state;

Pluggable database altered.

SQL> select con_name, state from dba_pdb_saved_states;

CON_NAME STATE
----------------------- --------------

5 of 7 01-02-2022, 16:08
Firefox about:blank

NONCDB OPEN
PDB1 OPEN

1. Bounce the CDB to check the PDB State:

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 NONCDB READ WRITE NO

SQL> shutdown immediate;


Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> startup
ORACLE instance started.

Total System Global Area 1.4529E+10 bytes


Fixed Size 7649368 bytes
Variable Size 8489273256 bytes
Database Buffers 5939134464 bytes
Redo Buffers 93011968 bytes
Database mounted.
Database opened.

6 of 7 01-02-2022, 16:08
Firefox about:blank

SQL> show pdbs

CON_ID CON_NAME OPEN MODE RESTRICTED


---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB1 READ WRITE NO
4 PDB2 MOUNTED
5 NONCDB READ WRITE NO

We can observe that, only PDB2 started in MOUNTED stage, because we have discarded the saved state for PDB2 .

As this feature is not available in 12.1.0.1 , we can create a trigger to open the PDBs automatically, with container database startup.

CREATE TRIGGER open_all_pdbs


AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE ‘ALTER PLUGGABLE DATABASE ALL OPEN’;
END ;
/

SEE ALSO:

How to convert non-cdb to pdb in oracle 12c

7 of 7 01-02-2022, 16:08

You might also like