Oracle Database 12c was released a few days ago. One of the most exciting new features from my point of view is the new multitenancy feature, aka pluggable databases.
What Oracle are doing is bringing us many of the advantages that virtualisation has for Operating Systems, to the database arena. The idea is that you build a container database (CDB), which contains many pluggable databases (PDB). As far as the application or TNS users are concerned, each PDB looks exactly like a standard non-PDB would have done prior to 12c. However, for the administrator it means one set of OS processes, one UNDO tablespace, one redo log, one alert log, one spfile….etc. You get the picture.
The advantage that gets me most excited though, is the ability to unplug a PDB from the CDB and plug it in elsewhere. Databases can be cloned in this manner, but best of all they can be patched this way too! Simply unplug the PDB from your old un-patched CDB and plug it into your recently patched CDB and you’re done. Oracle has completely disassociated the administrative overhead of the database from the user data.
Here we can see the new database creation screen within DBCA -
I’m creating a container database named cdb1 and at the same time also creating a pluggable database named pdb1.
A quick look at the running oracle processes shows that the container database is running, but no representation of the PDB at an OS level -
So how do we login to our PDB? We set up the environment to login to the CDB -
You can see above that our PDB is up and running, we just can’t necessarily see that by looking for pmon processes any more.
We can still shut down databases -
The following image shows me switching between root (more on this in a second) and my PDB and also demonstrating the lack of individual UNDO tablespaces -
So to finish up, here is a quick overview of some of the components within a container database -
CDB$ROOT – AKA root, this is the part of the database which you connect into by default as SYSDBA and it contains the UNDO, REDO etc.
PDB$SEED – This is what Oracle uses to create new PDB’s within the CDB. You can’t modify it after creation.
PDB1 – One or more (or none!) PDB’s (named whatever you want) within the CDB.
The feature has huge potential for application deployment, consolidated backups, cloning, patching, upgrades – I’m really looking forward to getting people using it.