Oracle 12c – Clone Pluggable Database

How to Clone a Pluggable Database?

In my last post, I had explained the steps to Unplug and Plug in the Pluggable Database in a CDB. Now in this post, we will see about the Cloning mechanism for the Pluggable Databases in a Multitenant Architecture.

Currently, we have the below databases.,

Container Database – GGCDB1

Pluggable Database – PDB1 and PDB2

In this article we will see How to clone the Pluggable Database PDB1.

Below is the list of databases in the environment. There are two Pluggable Databases and both are in READ WRITE mode.

 

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

To Clone the Pluggable Database, either the Pluggable Database should be in opened in Restricted Mode or Read Only Mode. Please follow the below steps to do it.,

 

  • Close the Pluggable Database PDB1. Issue the below command to close the PDB1.,
SQL> alter pluggable database pdb1 close;

Pluggable database altered.

 

SQL> show pdbs

CON_ID   CON_NAME   OPEN MODE     RESTRICTED
------   ---------- ------------- ----------------
 2       PDB$SEED   READ ONLY      NO
 3       PDB1       MOUNTED        NO
 4       PDB2       READ WRITE     NO

 

  • Open the Pluggable Database PDB1 with Read Only mode.
SQL> alter pluggable database pdb1 open read only;

Pluggable database altered.
SQL> show pdbs

CON_ID   CON_NAME   OPEN MODE     RESTRICTED
------   ---------- ------------- ----------------
 2       PDB$SEED   READ ONLY      NO
 3       PDB1       READ ONLY      NO
 4       PDB2       READ WRITE     NO

 

  • Now, we need to create a new directory for the new Clone Pluggable Database PDB1_clone to store its datafiles.
    Just see which mount point has free space or according to your wish you can create a directory for the new PDB_clone using the OS command,
[oracle@Oracle12c GGCDB1]$ pwd
/vol1/oradata/GGCDB1

[oracle@Oracle12c GGCDB1]$ mkdir PDB1_clone

[oracle@Oracle12c GGCDB1]$ ls -ldrt PDB1_clone

 

  • Configure the OMF to the newly created directory for the new clone Pluggable Database PDB1_clone.
alter system set db_create_file_dest='/vol1/oradata/GGCDB1/PDB1_clone';
SQL> alter system set db_create_file_dest='/vol1/oradata/GGCDB1/PDB1_clone';
System altered.

SQL> show parameter db_create_file_dest

NAME                   TYPE         VALUE
---------------------  -----------  ----------------------------------------------
db_create_file_dest    string       /vol1/oradata/GGCDB1/PDB1_clone

 

So, we have completed the Preliminary steps to Clone a Pluggable Database.

  • Now issue the below command to clone the Pluggable Database PDB1 to PDB1_clone.
 create pluggable database pdb1_clone from pdb1;
SQL> create pluggable database pdb1_clone from pdb1;

Pluggable database created.

 

You could see the below in the alertlog file.,

create pluggable database pdb1_clone from pdb1
 Mon Sep 28 12:12:11 2015
 ****************************************************************
 Pluggable Database PDB1_CLONE with pdb id - 5 is created as UNUSABLE.
 If any errors are encountered before the pdb is marked as NEW,
 then the pdb must be dropped
 ****************************************************************
 Deleting old file#18 from file$
 Deleting old file#19 from file$
 Deleting old file#20 from file$
 Adding new file#27 to file$(old file#18)
 Adding new file#28 to file$(old file#19)
 Adding new file#29 to file$(old file#20)
 Successfully created internal service pdb1_clone at open
 ALTER SYSTEM: Flushing buffer cache inst=0 container=5 local
 ****************************************************************
 Post plug operations are now complete.
 Pluggable database PDB1_CLONE with pdb id - 5 is now marked as NEW.
 ****************************************************************
 Completed: create pluggable database pdb1_clone from pdb1

 

  •  The Pluggable Database PDB1 has been cloned to PDB1_clone. Check the status of the Pluggable databases.,
SQL> show pdbs

CON_ID   CON_NAME   OPEN MODE     RESTRICTED
------   ---------- ------------- ----------------
 2       PDB$SEED   READ ONLY      NO
 3       PDB1       READ ONLY      NO
 4       PDB2       READ WRITE     NO
 5       PDB1_CLONE MOUNTED

 

  • Bring back the Pluggable Database PDB1 to READ WRITE mode.
SQL> alter pluggable database pdb1 close immediate;

Pluggable database altered.

 

SQL> show pdbs

CON_ID   CON_NAME   OPEN MODE     RESTRICTED
------   ---------- ------------- ----------------
 2       PDB$SEED   READ ONLY      NO
 3       PDB1       MOUNTED        
 4       PDB2       READ WRITE     NO
 5       PDB1_CLONE MOUNTED

 

SQL> alter pluggable database pdb1 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       PDB1_CLONE MOUNTED

 

  • Bring the Cloned Pluggable Database PDB1_clone to OPEN READ WRITE mode.,
SQL> alter pluggable database pdb1_clone 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       PDB1_CLONE READ WRITE     NO

 

So, The Pluggable Database PDB1 has been cloned to PDB1_clone successfully and now all the pluggable databases are available in READ WRITE mode.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *