The RAC CDB and the non-RAC CDB are both 12.1.0.2 SE2 instances. Currently the single instance CDB doesn't have any PDB plugged on it. SE2 CDBs only support single tenancy due to license restriction. The RAC CDB has a PDB available on both instances.
So the final command to plug the PDB into single instance will have two file name convert entires, one for data files and another for temp files
Related Posts
Move a PDB Between Servers
Plugging a SE2 non-CDB as an EE PDB Using File Copying and Remote Link
INSTANCE NAME OPEN_MODE STATUS RESBoth CDBs has same components except for RAC components which is set not available on the single instance CDB. DB registry of the RAC CDB
------------ ------------ ---------- --------- ---
stdcdb1 PDB$SEED READ ONLY NORMAL NO
stdcdb1 STDPDB READ WRITE NORMAL NO
stdcdb2 PDB$SEED READ ONLY NORMAL NO
stdcdb2 STDPDB READ WRITE NORMAL NO
SQL> select comp_name,status from dba_registry order by 1;DB Registry of the non-RAC CDB
COMP_NAME STATUS
---------------------------------------- -----------
JServer JAVA Virtual Machine VALID
Oracle Application Express VALID
Oracle Database Catalog Views VALID
Oracle Database Java Packages VALID
Oracle Database Packages and Types VALID
Oracle Multimedia VALID
Oracle Real Application Clusters VALID
Oracle Text VALID
Oracle Workspace Manager VALID
Oracle XDK VALID
Oracle XML Database VALID
SQL> select comp_name,status from dba_registry order by 1;Process of moving the PDB is similar to earlier post except for few RAC and ASM related tasks. To summarize, before the PDB could be moved from currently plugged in CDB, it must be stopped, unplugged and dropped. The unplugging will create a PDB descriptor file and on in the DB file names will appear in lower case while rest of the path appear upper case.
COMP_NAME STATUS
---------------------------------------- -----------
JServer JAVA Virtual Machine VALID
Oracle Application Express VALID
Oracle Database Catalog Views VALID
Oracle Database Java Packages VALID
Oracle Database Packages and Types VALID
Oracle Multimedia VALID
Oracle Real Application Clusters OPTION OFF
Oracle Text VALID
Oracle Workspace Manager VALID
Oracle XDK VALID
Oracle XML Database VALID
cat stdpdb_desc.xml | grep pathHowever when data files are copied out of ASM using asmcmd they will have the names in upper case (e.g. SYSTEM.291.894734477). As a result plugging will fail as it is unable to identify the file name+DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/DATAFILE/system.291.894734477 +DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/DATAFILE/sysaux.292.894734481 +DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/TEMPFILE/temp.295.922121143 +DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/DATAFILE/users.293.894734495 +DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/DATAFILE/tapp.294.894734495
create pluggable database stdpdb as clone using '/home/oracle/stdcdb/datafiles/stdpdb_desc.xml'So before the plugging rename the file names same as on descriptor file.
*
ERROR at line 1:
ORA-19505: failed to identify file "/home/oracle/stdcdb/datafiles/system.291.894734477"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
SQL> ! ls "/home/oracle/stdcdb/datafiles/system.291.894734477"
ls: /home/oracle/stdcdb/datafiles/system.291.894734477: No such file or directory
SQL> ! ls -l /home/oracle/stdcdb/datafiles/*
-rw-r--r-- 1 oracle oinstall 6925 Sep 12 10:47 /home/oracle/stdcdb/datafiles/stdpdb_desc.xml
-rw-r----- 1 oracle oinstall 550510592 Sep 12 10:44 /home/oracle/stdcdb/datafiles/SYSAUX.292.894734481
-rw-r----- 1 oracle oinstall 293609472 Sep 12 10:45 /home/oracle/stdcdb/datafiles/SYSTEM.291.894734477
-rw-r----- 1 oracle oinstall 20979712 Sep 12 10:45 /home/oracle/stdcdb/datafiles/TAPP.294.894734495
-rw-r----- 1 oracle oinstall 5251072 Sep 12 10:45 /home/oracle/stdcdb/datafiles/USERS.293.894734495
mv SYSTEM.291.894734477 system.291.894734477Also in ASM datafiles and tempfiles have separate paths, as a result the tempfile location must also specified in the source_file_name convert even though file itself is not necessary to be copied to new location. Temp file get dropped when the PDB is dropped even though keep data file options is used.
mv SYSAUX.292.894734481 sysaux.292.894734481
mv TAPP.294.894734495 tapp.294.894734495
mv USERS.293.894734495 users.293.894734495
drop pluggable database stdpdb keep datafiles
Deleted Oracle managed file +DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/TEMPFILE/temp.295.922364799
Completed: drop pluggable database stdpdb keep datafiles
So the final command to plug the PDB into single instance will have two file name convert entires, one for data files and another for temp files
create pluggable database stdpdb as clone using '/home/oracle/stdcdb/datafiles/stdpdb_desc.xml'Once the PDB is plugged open it
source_file_name_convert=(
'+DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/DATAFILE','/home/oracle/stdcdb/datafiles',
'+DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/TEMPFILE','/home/oracle/stdcdb/datafiles') move;
SQL> show pdbsLooking at the PDB violation view will show the warning related to missing RAC option.
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 STDPDB MOUNTED
SQL> alter pluggable database stdpdb open;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 STDPDB READ WRITE NO
SQL> select name from v$datafile;
NAME
-----------------------------------------------------------------------------------------------
/ssdoracle/oradata/STDCDB/datafile/o1_mf_undotbs1_cx2j8d05_.dbf
/ssdoracle/oradata/STDCDB/3C4F4864ACAE0C3DE0534200A8C05C7A/datafile/o1_mf_system_cxf6fp5g_.dbf
/ssdoracle/oradata/STDCDB/3C4F4864ACAE0C3DE0534200A8C05C7A/datafile/o1_mf_sysaux_cxf6fp5h_.dbf
/ssdoracle/oradata/STDCDB/3C4F4864ACAE0C3DE0534200A8C05C7A/datafile/o1_mf_users_cxf6fp5j_.dbf
/ssdoracle/oradata/STDCDB/3C4F4864ACAE0C3DE0534200A8C05C7A/datafile/o1_mf_tapp_cxf6fp5k_.dbf
SQL> select name,status,action,message from PDB_PLUG_IN_VIOLATIONS where cause='OPTION';Login into the PDB and turn off the RAC options
NAME STATUS ACTION MESSAGE
-------- --------- -------------------------------------------------- -------------------------------------------------------------------------------------------
STDPDB PENDING Fix the database option in the PDB or the CDB Database option RAC mismatch: PDB installed version 12.1.0.2.0. CDB installed version NULL.
SQL> alter session set container=stdpdb;Close and open the PDB. The PDB violation view will show the issue has been resolved.
SQL> show con_name
CON_NAME
---------
STDPDB
SQL> select comp_name,status from dba_registry order by 1;
COMP_NAME STATUS
---------------------------------------- -----------
JServer JAVA Virtual Machine VALID
Oracle Application Express VALID
Oracle Database Catalog Views VALID
Oracle Database Java Packages VALID
Oracle Database Packages and Types VALID
Oracle Multimedia VALID
Oracle Real Application Clusters VALID
Oracle Text VALID
Oracle Workspace Manager VALID
Oracle XDK VALID
Oracle XML Database VALID
11 rows selected.
SQL> exec dbms_registry.OPTION_OFF('RAC');
SQL> select comp_name,status from dba_registry order by 1;
COMP_NAME STATUS
---------------------------------------- -----------
JServer JAVA Virtual Machine VALID
Oracle Application Express VALID
Oracle Database Catalog Views VALID
Oracle Database Java Packages VALID
Oracle Database Packages and Types VALID
Oracle Multimedia VALID
Oracle Real Application Clusters OPTION OFF
Oracle Text VALID
Oracle Workspace Manager VALID
Oracle XDK VALID
Oracle XML Database VALID
SQL> select name,status,action,message from PDB_PLUG_IN_VIOLATIONS where cause='OPTION';This concludes the moving of PDB from RAC CDB to single instance CDB.
NAME STATUS ACTION MESSAGE
-------- --------- -------------------------------------------------- -------------------------------------------------------------------------------------------
STDPDB RESOLVED Fix the database option in the PDB or the CDB Database option RAC mismatch: PDB installed version 12.1.0.2.0. CDB installed version NULL.
Related Posts
Move a PDB Between Servers
Plugging a SE2 non-CDB as an EE PDB Using File Copying and Remote Link