This post list two methods for plugging a non-CDB on standard edition 2 (SE2) as a pluggable database on enterprise edition (EE) CDB. One is using a XML description file which also includes copying the data files to (if EE database reside in another server). Other method is using a remote link. Reverse of this process, that is EE plugged into SE2 is not possible according to 1631260.1. This is because SE2 has less options than EE. But as long as the options in the SE2 are a subset of EE, moving from SE2 to EE is possible (2020172.1). Current options on the SE2 are
Method 1. File Copying
Start the SE2 in read only mode, create the non-CDB descriptor file and shutdown.
Method 2. Remote Link
In this method a remote link created from the EE CDB to SE2 non-CDB and used to create the PDB.
Unlike the method 1, in method 2 the undo tablespace within the PDB will be offline.
"OPTION WARNING Database option mismatch: PDB installed version NULL" in PDB_PLUG_IN_VIOLATIONS [ID 2020172.1]
Unplug an Enterprise Edition PDB and Plug into a Standard Edition CDB says not compatible when using DBMS_PDB.CHECK_PLUG_COMPATIBILITY [ID 1631260.1]
Related Post
Move a PDB Between Servers
SQL> select comp_id,comp_name,status,version from dba_registry;Options on the EE are
COMP_ID COMP_NAME STATUS VERSION
---------- ---------------------------------------- -------- ----------
CONTEXT Oracle Text VALID 12.1.0.2.0
OWM Oracle Workspace Manager VALID 12.1.0.2.0
XDB Oracle XML Database VALID 12.1.0.2.0
CATALOG Oracle Database Catalog Views VALID 12.1.0.2.0
CATPROC Oracle Database Packages and Types VALID 12.1.0.2.0
SQL> select comp_id,comp_name,status,version from dba_registry;Both SE2 and EE has been patched to the same level.
COMP_ID COMP_NAME STATUS VERSION
---------- ---------------------------------------- ---------- ---------------
DV Oracle Database Vault VALID 12.1.0.2.0
APEX Oracle Application Express VALID 4.2.5.00.08
OLS Oracle Label Security VALID 12.1.0.2.0
SDO Spatial VALID 12.1.0.2.0
ORDIM Oracle Multimedia VALID 12.1.0.2.0
CONTEXT Oracle Text VALID 12.1.0.2.0
OWM Oracle Workspace Manager VALID 12.1.0.2.0
XDB Oracle XML Database VALID 12.1.0.2.0
CATALOG Oracle Database Catalog Views VALID 12.1.0.2.0
CATPROC Oracle Database Packages and Types VALID 12.1.0.2.0
JAVAVM JServer JAVA Virtual Machine VALID 12.1.0.2.0
XML Oracle XDK VALID 12.1.0.2.0
CATJAVA Oracle Database Java Packages VALID 12.1.0.2.0
APS OLAP Analytic Workspace VALID 12.1.0.2.0
XOQ Oracle OLAP API VALID 12.1.0.2.0
RAC Oracle Real Application Clusters OPTION OFF 12.1.0.2.0
Method 1. File Copying
Start the SE2 in read only mode, create the non-CDB descriptor file and shutdown.
SQL> startup mount exclusive;Copy the descriptor file the data files to the location where EE CDB resides
SQL> alter database open read only;
SQL> exec dbms_pdb.describe(pdb_descr_file=>'/home/oracle/backup/se2_noncdb_desc.xml');
SQL> shutdown imm
scp -C se2_noncdb_desc.xml 192.168.0.99:/home/oracle/backup/On the EE CDB run a compatibility check against the descriptor file
cd /data/oradata/STD12C1/datafile/
scp -C * 192.168.0.99:/home/oracle/backup/
o1_mf_sysaux_byjg3ypy_.dbf 100% 550MB 25.0MB/s 00:22
o1_mf_system_byjg3q5k_.dbf 100% 700MB 25.0MB/s 00:28
...
set serveroutput onAs seen from the output the compatibility fails. Look in the PDB_PLUG_IN_VIOLATIONS and if the cause for warnings are due to missing options then the incompatibility is ignore-able (2020172.1).
declare
compa boolean;
begin
compa := dbms_pdb.CHECK_PLUG_COMPATIBILITY(pdb_descr_file=>'/home/oracle/backup/se2_noncdb_desc.xml');
if compa = true then
dbms_output.put_line('compatible');
else
dbms_output.put_line('no compatible');
end if;
end;
/
no compatible
SQL> select name,cause,status,type,action from PDB_PLUG_IN_VIOLATIONS where name='STDPDB' AND STATUS <>'RESOLVED';Plug the SE2 non-CDB using the descriptor file
NAME CAUSE STATUS TYPE ACTION
-------- ---------- --------- --------- ------------------------------------------------------------
STDPDB OPTION PENDING WARNING Fix the database option in the PDB or the CDB
STDPDB OPTION PENDING WARNING Fix the database option in the PDB or the CDB
STDPDB APEX PENDING WARNING Please contact Oracle Support.
SQL> select status,message from PDB_PLUG_IN_VIOLATIONS where name='STDPDB' AND STATUS <>'RESOLVED';
STATUS MESSAGE
--------- ----------------------------------------------------------------------------------------------------
PENDING Database option APS mismatch: PDB installed version NULL. CDB installed version 12.1.0.2.0.
PENDING Database option CATJAVA mismatch: PDB installed version NULL. CDB installed version 12.1.0.2.0.
PENDING Database option DV mismatch: PDB installed version NULL. CDB installed version 12.1.0.2.0.
PENDING Database option JAVAVM mismatch: PDB installed version NULL. CDB installed version 12.1.0.2.0.
PENDING Database option OLS mismatch: PDB installed version NULL. CDB installed version 12.1.0.2.0.
PENDING Database option ORDIM mismatch: PDB installed version NULL. CDB installed version 12.1.0.2.0.
PENDING Database option SDO mismatch: PDB installed version NULL. CDB installed version 12.1.0.2.0.
PENDING Database option XML mismatch: PDB installed version NULL. CDB installed version 12.1.0.2.0.
PENDING Database option XOQ mismatch: PDB installed version NULL. CDB installed version 12.1.0.2.0.
PENDING APEX mismatch: PDB installed version NULL CDB installed version 4.2.5.00.08
SQL> create pluggable database se2pdb as clone using '/home/oracle/backup/se2_noncdb_desc.xml'Chane to the PDB container and run noncdb_to_pdb.sql script
source_file_name_convert=('/data/oradata/STD12C1/datafile','/home/oracle/backup') move;
Pluggable database created.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ONEPDB READ WRITE NO
4 TWOPDB READ WRITE NO
5 SE2PDB MOUNTED
SQL> ALTER SESSION SET CONTAINER=se2pdb;When the script completes open the PDB
SQL> show con_name;
CON_NAME
------------------------------
SE2PDB
SQL> @?/rdbms/admin/noncdb_to_pdb.sql
SQL> alter pluggable database open;PDB opens without any restriction and is ready to use. EE CDB was setup using OMF, as such the plugged SE2 DB's datafile and tempfile will be created in a OMF structure with a new GUID.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
5 SE2PDB READ WRITE NO
SQL> select name from v$tempfile;The files associated with the undo and temp tablespaces on the non-CDB will not be used in the plugged in PDB.
NAME
----------------------------------------------------------------------------------------------------
/opt/app/oracle/oradata/CGCDB/3B61A02E318577C4E0536300A8C051DC/datafile/o1_mf_temp_cwg1lqd0_.dbf
1 row selected.
SQL> select name from v$datafile;
NAME
----------------------------------------------------------------------------------------------------
/opt/app/oracle/oradata/CGCDB/datafile/o1_mf_undotbs1_cvchzywd_.dbf
/opt/app/oracle/oradata/CGCDB/3B61A02E318577C4E0536300A8C051DC/datafile/o1_mf_system_cwg1lqcv_.dbf
/opt/app/oracle/oradata/CGCDB/3B61A02E318577C4E0536300A8C051DC/datafile/o1_mf_sysaux_cwg1lqcz_.dbf
/opt/app/oracle/oradata/CGCDB/3B61A02E318577C4E0536300A8C051DC/datafile/o1_mf_users_cwg1lqd0_.dbf
/opt/app/oracle/oradata/CGCDB/3B61A02E318577C4E0536300A8C051DC/datafile/o1_mf_tools_cwg1lqd1_.dbf
Method 2. Remote Link
In this method a remote link created from the EE CDB to SE2 non-CDB and used to create the PDB.
stdtns =Validate the link by running a query against the remote SE2 DB
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.66)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = std12c1)
)
)
SQL> create database link std_link connect to system identified by system using 'STDTNS';
Database link created.
SQL> select instance_name from v$instance@std_link;As OMF is used no other steps are needed to create the PDB. Run the create PDB statement
INSTANCE_NAME
----------------
std12c1
SQL> create pluggable database stdpdb from std12c1@std_link;Change to the newly created PDB, run the noncdb_to_pdb script and finally open the PDB
Pluggable database created.
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ONEPDB READ WRITE NO
4 TWOPDB READ WRITE NO
5 STDPDB MOUNTED
SQL> ALTER SESSION SET CONTAINER=stdpdb;Similar to method 1 and plugging violation due to missing options are ignore-able.
SQL> show con_name;
CON_NAME
------------------------------
STDPDB
SQL> @?/rdbms/admin/noncdb_to_pdb.sql
SQL> alter pluggable database open;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ONEPDB READ WRITE NO
4 TWOPDB READ WRITE NO
5 STDPDB READ WRITE NO
Unlike the method 1, in method 2 the undo tablespace within the PDB will be offline.
SQL> select tablespace_name,status from dba_tablespaces order by 2,1;This is due to the fact that both non-CDB and CDB where it's plugged having the same name for undo tablespace and undo tablespaces are not local to PDB but common to entire CDB. Unfortunately it's not possible to drop this within the PDB (2067414.1). However querying data files within the PDB shows the CDB's undo tablespace's data file
TABLESPACE_NAME STATUS
------------------------------ ---------
UNDOTBS1 OFFLINE
SQL> select name from v$datafile;Useful Metlink Notes
NAME
----------------------------------------------------------------------------------------------------
/opt/app/oracle/oradata/CGCDB/datafile/o1_mf_undotbs1_cvchzywd_.dbf
/opt/app/oracle/oradata/CGCDB/3BEEE6493046715CE0536300A8C0B4F0/datafile/o1_mf_system_cx0l5krb_.dbf
/opt/app/oracle/oradata/CGCDB/3BEEE6493046715CE0536300A8C0B4F0/datafile/o1_mf_sysaux_cx0l5krf_.dbf
"OPTION WARNING Database option mismatch: PDB installed version NULL" in PDB_PLUG_IN_VIOLATIONS [ID 2020172.1]
Unplug an Enterprise Edition PDB and Plug into a Standard Edition CDB says not compatible when using DBMS_PDB.CHECK_PLUG_COMPATIBILITY [ID 1631260.1]
Related Post
Move a PDB Between Servers