SQLMentor // articles

Oracle PDB vs CDB Architecture Explained

Since Oracle 12c, one Container Database (CDB) can host many Pluggable Databases (PDBs), each looking like a standalone database to the application connecting to it. Here's what CDB and PDB actually mean, why the model exists, and why it's the default you should expect on any current Oracle version.

One container, many pluggable databases

Since Oracle 12c, the default architecture is multitenant: a single CDB (Container Database) hosts one or more PDBs (Pluggable Databases). Each PDB looks and behaves like a normal, self-contained database to an application connecting to it — but under the hood, PDBs share the CDB's background processes and much of its memory (the SGA), which is what makes the model efficient to run many databases on one instance.

The key terms

TermWhat it is
CDB (Container Database)the outer container — one Oracle instance, one set of background processes, one SGA
CDB$ROOTthe root container holding Oracle-supplied shared metadata and objects common to every PDB
PDB$SEEDa template PDB used internally to create new PDBs quickly
PDB (Pluggable Database)a portable, self-contained database plugged into the CDB — this is what an application actually connects to

Why multitenant exists

Consolidation: many PDBs sharing one CDB's background processes and SGA use far less overhead than the same number of fully standalone instances. Fast provisioning: cloning, plugging, and unplugging a PDB is quick compared to building a standalone database from scratch. Simplified patching and upgrades: patch or upgrade the CDB once, and every PDB plugged into it benefits — instead of repeating the process per database.

Where this stands today

As of Oracle 19c, the older non-CDB architecture (a standalone database with no container) is desupported for new databases — multitenant is effectively the only architecture going forward for current Oracle versions. Anyone learning Oracle DBA skills today should expect to work with CDBs and PDBs as the default, not an optional extra.

Frequently asked questions

Do I connect to the CDB or the PDB as an application?
Applications connect to a specific PDB, using a connection string/service name that routes to that PDB — not the CDB$ROOT directly. From the application's point of view, the PDB behaves like a complete standalone database.
How many PDBs can one CDB hold?
The maximum varies by Oracle version and edition — check current documentation for your specific version. Earlier 12c releases had a lower per-CDB limit than later versions; it has generally increased over time.
Is the old non-CDB (standalone) architecture still available?
It's desupported for new databases as of Oracle 19c — multitenant (CDB/PDB) is effectively required going forward. Existing older non-CDB databases can still run, but new deployments should use the multitenant architecture.
Does this affect how I write application SQL?
No — regular SQL, PL/SQL, and application code work the same inside a PDB as they would in a standalone database. Multitenant is an administration/architecture concern, not something application-level queries need to account for.