Starting with Oracle Database Release 18c, RMAN enables you to use the DUPLICATE command to duplicate a PDB to an existing CDB. This is very useful feature which will allow the CDBs in your environment to duplicate PDBs, instead of having to create additional CDBs for deduplication tasks.

There are some restrictions on PDB duplication to an existing CDB:

  • Only active database duplication is supported.
  • You can’t duplicate PDB to a standby CDB.
  • One PDB can duplicated at a time.
  • You can’t skip exclude specific tablespace during PDB duplications. Means partial duplication is not allowed.
  • PDB with TDE- Encrypted tablespaces is not supported.
  • Only few clauses of the duplicate commands are supported like DB_FILE_NAME_CONVERT, SECTION SIZE etc… some clauses like FARSYNC, LOG_FILE_NAME_CONVERT is not supported. Check oracle documentation for more detail.


My environment is set up as below and It’s all ready to test the scenario. Check my other blogs, how to install and create 18c database from here.

  18c Env.
CDB Name PDB Name
Source CDB18 PDB18
Destination CDB_dest PDB_dest

The example assumes the following scenario:

  • Both Source CDB, CDB18 and destination CDB, CDB_dest are on same VM machine and both CDB’s are 18c compatible.
  • The PDB being duplicate PDB18,  is in read-write mode.
  •  Both source and destination CDB’s are open in read write mode with archiving enabled.

Now create the directories that will store the duplicate database files on the destination CDB.

Set the initialization parameter REMOTE_RECOVERY_FILE_DEST which determines the location to which foreign archived redo log files are restored  for the destination CDB.

RMAN duplicate the PDB by using the Duplicate pluggable database command where you connect as  Target to the root of the source CDB and as auxiliary to the root of the destination CDB.

Here is the output of RMAN PDB duplication command.

Note: I used a different name for the PDB in the destination (duplicate) database by using “PDB18 as PDB_dest” syntax. You can keep the same PDB name by skipping “as New_PDB_Name” from duplicate command.

Now check the status of the duplicated PDB on detination CDB.



Leave a Reply