This is a short article on converting existing non-container (non-cdb) 12c database as pluggable database (pdb) to existing container database (cdb).
Version of Non-CDB database = 12.1.0.1
Version of CDB database = 12.1.0.2
Following steps will plug-in non-cdb database into cdb as pdb and also will upgrade the version to 12.1.0.2
My non-cdb database name is deo12c
My cdb database name is deocdb
Step 1) Make sure that non-cdb database is at least 12.1.0.1 version. This is the first version available.
Step 2) Compatible is set to at least 12.0.0 in non-cdb database
Step 3) Open non-cdb database in read-only to create XML file for the PDB
Shutting down non-cdb database (deo12c)
SYS.DEO12C.PRIMARY>shut immediate; Database closed. Database dismounted. ORACLE instance shut down.
Mounting the database and opening in read-only
SYS.DEO12C.PRIMARY>startup mount ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance ORACLE instance started. Total System Global Area 4294967296 bytes Fixed Size 3719064 bytes Variable Size 4177526888 bytes Database Buffers 100663296 bytes Redo Buffers 13058048 bytes Database mounted. SYS.DEO12C.PRIMARY>alter database open read only; Database altered. SYS.DEO12C.PRIMARY>
Step 4) Create XML file for PDB
SYS.DEO12C.PRIMARY-RO>exec DBMS_PDB.DESCRIBE('/fs-a01-a/backups/deo12c/deopdb2.xml'); PL/SQL procedure successfully completed.
Step 5) Shutdown non-cdb database
SYS.DEO12C.PRIMARY-RO>SHUTDOWN IMMEDIATE Database closed. Database dismounted. ORACLE instance shut down. SYS.DEO12C.PRIMARY-RO>
Step 6) Plugin non-cdb database as PDB into CDB
Running following command on CDB database – deocdb
SYS.DEOCDB.PRIMARY>CREATE PLUGGABLE DATABASE deopdb2 USING '/fs-a01-a/backups/deo12c/deopdb2.xml' NOCOPY TEMPFILE REUSE; Pluggable database created. SYS.DEOCDB.PRIMARY>
Step 7) Convert the dictionary of new plugged in database to the PDB type
Change the container to new pluggable database
SYS.DEOCDB.PRIMARY>ALTER SESSION set container=deopdb2; Session altered. SYS.DEOCDB.PRIMARY>@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb.sql
Step 8) Start new pluggable database
SYS.DEOCDB.PRIMARY>alter pluggable database deopdb2 open; Warning: PDB altered with errors.
When we opened the pluggable database, we got a warning. You can check the details of warning by querying PDB_PLUG_IN_VIOLATIONS table
SYS.DEOCDB.PRIMARY>select name,cause,type,message,status from PDB_PLUG_IN_VIOLATIONS where name = 'DEOPDB2' and status != 'RESOLVED'; NAME CAUSE TYPE MESSAGE STATUS ------------------------------ ------------------------------ --------- -------------------------------------------------- --------- DEOPDB2 NATIONAL CHARACTER SET ERROR National character set mismatch: PDB national char PENDING acter set AL16UTF16. CDB national character set UT F8. DEOPDB2 OPTION WARNING Database option APS mismatch: PDB installed versio PENDING n NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option CATJAVA mismatch: PDB installed ve PENDING rsion NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option CONTEXT mismatch: PDB installed ve PENDING rsion NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option DV mismatch: PDB installed version PENDING NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option JAVAVM mismatch: PDB installed ver PENDING sion NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option OLS mismatch: PDB installed versio PENDING n NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option ORDIM mismatch: PDB installed vers PENDING ion NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option OWM mismatch: PDB installed versio PENDING n NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option SDO mismatch: PDB installed versio PENDING n NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option XML mismatch: PDB installed versio PENDING n NULL. CDB installed version 12.1.0.2.0. DEOPDB2 OPTION WARNING Database option XOQ mismatch: PDB installed versio PENDING n NULL. CDB installed version 12.1.0.2.0. DEOPDB2 APEX WARNING APEX mismatch: PDB installed version NULL CDB inst PENDING alled version 4.2.5.00.08 13 rows selected.
These warnings can be ignored. These are basically coming because dba_registry of container database doesn’t match new pluggable database.
In my case container database has following registry
SYS.DEOCDB.PRIMARY>alter session set container=cdb$root; Session altered. SYS.DEOCDB.PRIMARY>col comp_name format a40; SYS.DEOCDB.PRIMARY>SELECT comp_id,comp_name,version FROM dba_registry; COMP_ID COMP_NAME VERSION ------------------------------ ---------------------------------------- ------------------------------ DV Oracle Database Vault 12.1.0.2.0 APEX Oracle Application Express 4.2.5.00.08 OLS Oracle Label Security 12.1.0.2.0 SDO Spatial 12.1.0.2.0 ORDIM Oracle Multimedia 12.1.0.2.0 CONTEXT Oracle Text 12.1.0.2.0 OWM Oracle Workspace Manager 12.1.0.2.0 XDB Oracle XML Database 12.1.0.2.0 CATALOG Oracle Database Catalog Views 12.1.0.2.0 CATPROC Oracle Database Packages and Types 12.1.0.2.0 JAVAVM JServer JAVA Virtual Machine 12.1.0.2.0 XML Oracle XDK 12.1.0.2.0 CATJAVA Oracle Database Java Packages 12.1.0.2.0 APS OLAP Analytic Workspace 12.1.0.2.0 XOQ Oracle OLAP API 12.1.0.2.0 RAC Oracle Real Application Clusters 12.1.0.2.0 16 rows selected.
In my pluggable database, registry has only following components
SYS.DEOCDB.PRIMARY>alter session set container=deopdb2; Session altered. SYS.DEOCDB.PRIMARY>alter session set container=deopdb2; Session altered. SYS.DEOCDB.PRIMARY>SELECT comp_id,comp_name,version FROM dba_registry; COMP_ID COMP_NAME VERSION ------------------------------ ---------------------------------------- ------------------------------ XDB Oracle XML Database 12.1.0.2.0 CATALOG Oracle Database Catalog Views 12.1.0.2.0 CATPROC Oracle Database Packages and Types 12.1.0.2.0 RAC Oracle Real Application Clusters 12.1.0.2.0 4 rows selected.
You can get rid of above warnings by installing the required components in your pluggable database and match it with container database.
References:
https://docs.oracle.com/database/121/UPGRD/upgrade.htm#CHDBEDDA
Hope this helps !!