RMAN CDB Duplication While Skipping Selected PDBs

In large domain Oracle Multitenant (CDB/PDB) environments, it is often unnecessary—and inefficient—to duplicate all pluggable databases. RMAN provides the flexibility to duplicate only the required PDBs while skipping others, significantly reducing time, storage, and risk.

This article explains how to:

  • Duplicate a Container Database (CDB) from RMAN backup pieces
  • Skip selected Finance PDBs
  • Use ASM with Oracle Managed Files (OMF)
  • Create datafiles and redo logs automatically in +DATA and +RECO
  • Run the duplication in background using nohup

Scenario

ComponentName
Source CDB                            FINCDB_PROD
Target CDB                                      FINCDB_DEV
Backup Location              /backup_local/rman/FINCDB_19JAN2026
ASM Disk Groups        +DATA (datafiles), +RECO (redo logs)
Skipped PDBs        FIN_AP_PDB, FIN_AR_PDB, FIN_HR_PDB
Required PDBs        FIN_GL_PDB, FIN_FA_PDB

Prerequisites

  • Valid RMAN full backup of source CDB
  • Target Oracle Home installed and patched
  • ASM disk groups +DATA and +RECO mounted
  • Adequate storage and permissions
  • Auxiliary instance not registered in CRS (for non-RAC)

Step 1: Create a Minimal Initialization Parameter File (PFILE)

Create a basic PFILE for the auxiliary database.

*.db_name='FINCDB_DEV' *.enable_pluggable_database=true *.memory_target=16G *.processes=2000 *.db_create_file_dest='+DATA' *.db_create_online_log_dest_1='+RECO' *.compatible='19.0.0'

Save as:

/tmp/initFINCDB_DEV.ora

Step 2: Start Auxiliary Database in NOMOUNT Mode

SQL> STARTUP NOMOUNT PFILE='/tmp/initFINCDB_DEV.ora';

Confirm status:

SQL> SELECT status FROM v$instance;

Step 3: RMAN Duplicate Command (Skip Finance PDBs)

Create the RMAN command file:

vi FINCDB_DEV_duplicate.cmd
RUN { ALLOCATE AUXILIARY CHANNEL c1 DEVICE TYPE DISK; ALLOCATE AUXILIARY CHANNEL c2 DEVICE TYPE DISK; ALLOCATE AUXILIARY CHANNEL c3 DEVICE TYPE DISK; ALLOCATE AUXILIARY CHANNEL c4 DEVICE TYPE DISK; ALLOCATE AUXILIARY CHANNEL c5 DEVICE TYPE DISK; ALLOCATE AUXILIARY CHANNEL c6 DEVICE TYPE DISK; ALLOCATE AUXILIARY CHANNEL c7 DEVICE TYPE DISK; ALLOCATE AUXILIARY CHANNEL c8 DEVICE TYPE DISK; DUPLICATE DATABASE TO FINCDB_DEV BACKUP LOCATION '/backup_local/rman/FINCDB_19JAN2026' SKIP PLUGGABLE DATABASE FIN_AP_PDB, FIN_AR_PDB, FIN_HR_PDB NOFILENAMECHECK; }

Step 4: Run Duplication in Background

nohup rman auxiliary / \ cmdfile=FINCDB_DEV_duplicate.cmd \ log=FINCDB_DEV_duplicate.log &

Monitor progress:

tail -f FINCDB_DEV_duplicate.log

Step 5: ASM File Placement (Automatic)

Because the following parameters are set:

db_create_file_dest=+DATA db_create_online_log_dest_1=+RECO

Oracle automatically:

  • Creates datafiles and tempfiles in +DATA
  • Creates online redo logs in +RECO
  • Uses OMF naming (no manual file mapping)

Step 6: Post-Duplicate Validation

Check CDB Status

SELECT name, open_mode FROM v$database;

Verify PDBs

SHOW PDBS;

Expected:

Required PDBs → OPEN

Skipped PDBs → NOT PRESENT

Validate ASM Locations

SELECT name FROM v$datafile; SELECT member FROM v$logfile;















Please do like and subscribe to my youtube channel: https://www.youtube.com/@foalabs If you like this post please follow,share and comment