In case you are desesperately looking for an upgrade from non-cdb to pdb with two clicks, here is the answer from Mike : you can’t
Nope – not via "upgrade". You can use Data Pump, Transportable Tablespaces or Full Transportable Export/Import as a direct option but you can't upgrade and plugin in one pass unfortunately 🙁
— Mike Dietrich (@MikeDietrichDE) August 22, 2018
If your database is huge and you don’t want to move anything nor change SID nor change path, this is my own receipt.
- Backup your database
- Create a XML description of your CDB
shutdown immediate
startup read only
exec dbms_pdb.describe('/save/DB01/DB01.xml')
shutdown immediate
- Setup init.ora parameter for PDB
startup force nomount restrict
alter system set enable_pluggable_database=true scope=spfile;
alter system set db_name=CDBDB01 scope=spfile;
alter system set instance_name=DB01 scope=spfile;
startup force nomount
- Create a CDB database
Yes, you have read it correctly. You are required to create a database. There is -so far I’ve googled- no way to avoid this step. You can use dbca or sqlplus.
Don’t overwrite the datafile. Use for instance /data/DB01/cdb/system.dbf instead of /data/DB01/system.dbf
create database CDBDB01
user sys identified by ***
user system identified by ***
character set al32utf8
national character set al16utf16
logfile
('/onlinelog/DB01/redo01a.dbf','/onlinelog/DB01/redo01b.dbf') size 32M REUSE,
('/onlinelog/DB01/redo02a.dbf','/onlinelog/DB01/redo02b.dbf') size 32M REUSE
extent management local
datafile '/data/DB01/cdb/system01.dbf' size 10M autoextend on
sysaux datafile '/data/DB01/cdb/sysaux01.dbf' size 10M autoextend on
default tablespace admin datafile '/data/DB01/cdb/admin01.dbf' size 10m autoextend on
extent management local autoallocate
default temporary tablespace temp
tempfile '/data/DB01/cdb/temp01.dbf' size 10M autoextend on
undo tablespace undotbs1 datafile '/data/DB01/cdb/undotbs1_01.dbf' size 10M autoextend on
set time_zone='Europe/Zurich'
ENABLE PLUGGABLE DATABASE
SEED FILE_NAME_CONVERT = ('/data/DB01/cdb/', '/data/DB01/seed/')
LOCAL UNDO ON
USER_DATA TABLESPACE users datafile '/data/DB01/cdb/users01.dbf' size 10m autoextend on;
perl catcon.pl -u sys/*** -d oh/rdbms/admin -b catalog_DB01 -e -l log catalog.sql
perl catcon.pl -u sys/*** -d oh/rdbms/admin -b catproc_DB01 -e -l log catproc.sql
It’s a pretty cumbersome step. Maybe you need Oracle Text or maybe you have DEC character set… all those details must be engineered by the DBA. This is pretty insane Oracle doesn’t offer a tool to migrate to a non-deprecated architecture. - Plug-in the database
CREATE PLUGGABLE DATABASE DB01 USING '/save/DB01/DB01.xml' nocopy tempfile reuse;
If you miss this step, Ô râge, Ô désespoir, you probably must restart from the beginning. - run noncdb_to_pdb
alter session set container=DB01;
alter pluggable database DB01 open;
alter session set container=DB01;
@?/rdbms/admin/noncdb_to_pdb.sql
Once you are so far, you’ll have all advantages of Multi-Tenant. PDB-Clone. PDB-Flashback. Lockdown profiles. And you’ll be able to consolidate if you buy the multitenant option. You’ll save money on hardware (SGA/CPU) to spent on software (Multitenant option).
Most importantly, you’ll have moved to a non-deprecated architecture
Conclusion: there is more than one way to move to pluggable. But there is no way to migrate to pluggable without creating a new database
Pingback: Oracle 12cR2, primi test con gli Application Container | Oracle and other