Tuesday, November 15, 2016

Oracle container and pluggable databases are now the default

This may not have come up too much yet, but starting with Oracle version 12.1.0.2 (supported as of TR 9.1.4) Oracle has done away with the concept of single instance databases in favor of Container Databases (CDB) with Pluggable databases (PDB). This adds a little bit more complexity to the install and management of the database. Any customer upgrading or migrating to 12c will have to convert their database to a PDB. Don’t worry though – it’s actually not that hard to do.

What is a CDB/PDB?
A CDB is basically all the Oracle system databases and other objects that every database needs like control files, redo logs, tempfiles, etc.. The PDB is all the user databases (like JDE). This architecture makes the data independent of the system, although an end-user wouldn’t be able to tell. All future installations of Oracle database will use this two-part configuration whether you need it or not.

PDB/CDB benefits
Where the PDB/CDB combo really shines is when a company is hosting multiple database instances. For example, instead of having two servers to hold production and development data, you could have those two instances on a single server. Each instance would be a separate Pluggable database (PDB) that both use the single common Container database (CDB). A great feature of a PDB is that it can be instantly cloned, providing you with a point-in-time consistent copy of the source database. It is, however, an additional cost to use the multitenant option.

Using a PDB
JDE users wouldn’t ever connect to a CDB – that is reserved for the DBA. To an end user (or even a junior DBA), the PDB would look like a complete Oracle database – just like old times. In reality, most JDE installs are only going to ever have one PDB per CDB which is essentially the same as it always was. However, you could have a PDB for production, one for DV, and another for PY which could all run on the same large machine sharing a single CDB.

Why is there a CDB/PDB?
There are some great reasons to have PDBs, such as fast upgrades, rapid cloning and snapshots, and reduced overhead. The main benefit to this is really for Oracle, because it makes it easier to provide a cloud-style database service. This lets them manage multiple customer databases from a single point without multiplying the common overhead.

Uses in JDE
For a company using JDE software there are definitely some advantages, but in general JDE practice a multitenant CDB/PDB configuration would not typically be used. A copy of a PDB would need to have to same table owners as the source, and the act of duplicating the PDB requires a brief period of read-only access. It could not be used for a JDE-style data refresh of a lower environment. Perhaps in future versions it will be possible to make PDB clones more flexible.