INSTANCE NAME OPEN_MODE STATUS RES ------------ ------------ ---------- --------- --- 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 NOBoth CDBs has same components except for RAC components which is set not available on the single instance CDB. DB registry of the RAC CDB
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 VALIDDB Registry of the non-RAC CDB
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 VALIDProcess 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.
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' * 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.894734495So before the plugging rename the file names same as on descriptor file.
mv SYSTEM.291.894734477 system.291.894734477 mv SYSAUX.292.894734481 sysaux.292.894734481 mv TAPP.294.894734495 tapp.294.894734495 mv USERS.293.894734495 users.293.894734495Also 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.
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' source_file_name_convert=( '+DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/DATAFILE','/home/oracle/stdcdb/datafiles', '+DATA/STDCDB/238FA674AFE26E9DE0535E00A8C0F5A1/TEMPFILE','/home/oracle/stdcdb/datafiles') move;Once the PDB is plugged open it
SQL> show pdbs 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_.dbfLooking at the PDB violation view will show the warning related to missing RAC option.
SQL> select name,status,action,message from PDB_PLUG_IN_VIOLATIONS where cause='OPTION'; 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.Login into the PDB and turn off the RAC options
SQL> alter session set container=stdpdb; 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 VALIDClose and open the PDB. The PDB violation view will show the issue has been resolved.
SQL> select name,status,action,message from PDB_PLUG_IN_VIOLATIONS where cause='OPTION'; 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.This concludes the moving of PDB from RAC CDB to single instance CDB.
Related Posts
Move a PDB Between Servers
Plugging a SE2 non-CDB as an EE PDB Using File Copying and Remote Link