By Franck Pachot

.
In 12.1 we had the possibility to unplug a PDB by closing it and generating a .xml file that describes the PDB metadata required to plug the datafiles into another CDB.
In 12.2 we got an additional possibility to have this .xml file zipped together with the datafiles, for an easy transport. But that was not working for ASM files.
The latest Release Update, Oct 17 includes the patch that fixes this issue and is the occasion to show PDB archive.

Here is Oracle 12.2.0.1 with Oct 2017 (https://updates.oracle.com/download/26737266.html) applied (needs latest OPatch https://updates.oracle.com/download/6880880.html)
With a PDB1 pluggable database:


[oracle@VM106 ~]$ rman target /
 
Recovery Manager: Release 12.2.0.1.0 - Production on Wed Oct 18 16:16:41 2017
 
Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.
 
connected to target database: CDB1 (DBID=920040307)
 
RMAN> report schema;
 
using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name CDB1
 
List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    810      SYSTEM               YES     /acfs/oradata/CDB1/datafile/o1_mf_system_dmrbv534_.dbf
3    540      SYSAUX               NO      /acfs/oradata/CDB1/datafile/o1_mf_sysaux_dmrbxvds_.dbf
4    70       UNDOTBS1             YES     /acfs/oradata/CDB1/datafile/o1_mf_undotbs1_dmrbz8mm_.dbf
5    250      PDB$SEED:SYSTEM      NO      /acfs/oradata/CDB1/datafile/o1_mf_system_dmrc52tm_.dbf
6    330      PDB$SEED:SYSAUX      NO      /acfs/oradata/CDB1/datafile/o1_mf_sysaux_dmrc52t9_.dbf
7    5        USERS                NO      /acfs/oradata/CDB1/datafile/o1_mf_users_dygrpz79_.dbf
8    100      PDB$SEED:UNDOTBS1    NO      /acfs/oradata/CDB1/datafile/o1_mf_undotbs1_dmrc52x0_.dbf
21   250      PDB1:SYSTEM          YES     /acfs/oradata/CDB1/5BD3ED9D73B079D2E0536A4EA8C0967B/datafile/o1_mf_system_dygrqqq2_.dbf
22   350      PDB1:SYSAUX          NO      /acfs/oradata/CDB1/5BD3ED9D73B079D2E0536A4EA8C0967B/datafile/o1_mf_sysaux_dygrqqs8_.dbf
23   100      PDB1:UNDOTBS1        YES     +ASM1/CDB1/5BD3ED9D73B079D2E0536A4EA8C0967B/DATAFILE/undotbs1.257.957719779
 
List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    33       TEMP                 32767       /acfs/oradata/CDB1/datafile/o1_mf_temp_dmrc4wlh_.tmp
2    64       PDB$SEED:TEMP        32767       /acfs/oradata/CDB1/pdbseed/temp012017-06-10_19-17-38-745-PM.dbf
3    64       PDB1:TEMP            32767       /acfs/oradata/CDB1/5BD3ED9D73B079D2E0536A4EA8C0967B/datafile/o1_mf_temp_dygrqqsh_.dbf

I have moved one file to ASM to show that it is now handled correctly.

The pluggable database is closed, we can unplug it. Nothing changes with the unplug syntax except the extension of the file. If the file mentioned is a .pdb instead of a .xml then it is a PDB archive:


RMAN> alter pluggable database PDB1 unplug into '/var/tmp/PDB1.pdb';
 
RMAN> alter pluggable database PDB1 close;
 
Statement processed
 
RMAN> alter pluggable database PDB1 unplug into '/var/tmp/PDB1.pdb'
2> ;
 
Statement processed
 
RMAN> exit

Actually it is just a zip file with the datafiles, without the full path:


[oracle@VM106 ~]$ unzip -t /var/tmp/PDB1.pdb
Archive:  /var/tmp/PDB1.pdb
    testing: o1_mf_system_dygrqqq2_.dbf   OK
    testing: o1_mf_sysaux_dygrqqs8_.dbf   OK
    testing: undotbs1.257.957719779   OK
    testing: /var/tmp/PDB1.xml        OK
No errors detected in compressed data of /var/tmp/PDB1.pdb.

You can see that the ASM file is not different from the others.

I drop the pluggable database


RMAN> drop pluggable database PDB1 including datafiles;
 
using target database control file instead of recovery catalog
Statement processed
 

And plug back the PDB1, as PDB2, using the zip file:


RMAN> create pluggable database PDB2 using '/var/tmp/PDB1.pdb';
 
Statement processed
 
RMAN> report schema;
 
Report of database schema for database with db_unique_name CDB1
 
List of Permanent Datafiles
===========================
File Size(MB) Tablespace           RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1    810      SYSTEM               YES     /acfs/oradata/CDB1/datafile/o1_mf_system_dmrbv534_.dbf
3    540      SYSAUX               NO      /acfs/oradata/CDB1/datafile/o1_mf_sysaux_dmrbxvds_.dbf
4    70       UNDOTBS1             YES     /acfs/oradata/CDB1/datafile/o1_mf_undotbs1_dmrbz8mm_.dbf
5    250      PDB$SEED:SYSTEM      NO      /acfs/oradata/CDB1/datafile/o1_mf_system_dmrc52tm_.dbf
6    330      PDB$SEED:SYSAUX      NO      /acfs/oradata/CDB1/datafile/o1_mf_sysaux_dmrc52t9_.dbf
7    5        USERS                NO      /acfs/oradata/CDB1/datafile/o1_mf_users_dygrpz79_.dbf
8    100      PDB$SEED:UNDOTBS1    NO      /acfs/oradata/CDB1/datafile/o1_mf_undotbs1_dmrc52x0_.dbf
24   250      PDB2:SYSTEM          NO      /acfs/oradata/CDB1/5BD3ED9D73B079D2E0536A4EA8C0967B/datafile/o1_mf_system_dygwt1lh_.dbf
25   350      PDB2:SYSAUX          NO      /acfs/oradata/CDB1/5BD3ED9D73B079D2E0536A4EA8C0967B/datafile/o1_mf_sysaux_dygwt1lm_.dbf
26   100      PDB2:UNDOTBS1        NO      /acfs/oradata/CDB1/5BD3ED9D73B079D2E0536A4EA8C0967B/datafile/o1_mf_undotbs1_dygwt1lo_.dbf
 
List of Temporary Files
=======================
File Size(MB) Tablespace           Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
1    33       TEMP                 32767       /acfs/oradata/CDB1/datafile/o1_mf_temp_dmrc4wlh_.tmp
2    64       PDB$SEED:TEMP        32767       /acfs/oradata/CDB1/pdbseed/temp012017-06-10_19-17-38-745-PM.dbf
4    64       PDB2:TEMP            32767       /acfs/oradata/CDB1/5BD3ED9D73B079D2E0536A4EA8C0967B/datafile/o1_mf_temp_dygwt1lp_.dbf

Here all files are there, created in the db_create_file_dest.

File name convert

When you create a pluggable database and you are not in OMF you need to add a FILE_NAME_CONVERT to convert from the source file names to destination file names. When the files are referenced by a .xml file, the .xml file references the path to the files as they were in the source database. If you move then, you can update the .xml file, or you can use SOURCE_FILE_NAME_CONVERT to mention the new place. With a .pdb archive, the .xml inside contains the original path, but this is not what will be used. The path of the .pdb itself is used, as if the files were unzipped at that place.

If you use Oracle-Managed-Files, don’t care about the file names and then you don’t need all those file name converts.