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
| Term | What it is |
|---|---|
| CDB (Container Database) | the outer container — one Oracle instance, one set of background processes, one SGA |
| CDB$ROOT | the root container holding Oracle-supplied shared metadata and objects common to every PDB |
| PDB$SEED | a 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.