I did blog about several things-to-know with DBCA (Database Configuration Assistant) in the past. And one issue came up in our internal mailing list the other day. Be aware of database options selections for PDBs in DBCA. Missing one or the other “click” may bring you in trouble later on. I blogged about this already a while ago but this was only part of a larger post: Create Multitenant Databases with DBCA – Things to Know.
Be aware of database options selections for PDBs in DBCA
When you create a custom container database with DBCA you will see this screen. It allows you to select the options you’ll create in the CDB$ROOT and in PDBs.
In the past I mentioned already that:
- You can choose your option set for container databases, even in Oracle 12.1
- Why you should keep out APEX from CDB$ROOT
- And here I pointed out Things to Know with DBCA when you create a container database
And this post contains also a recommendation about what happens when you don’t click “Include in PDBs”. But as it is hidden in a general blog post I decided to write a separate one (this one here) today again.
If you don’t click, it won’t be in the PDB$SEED
The PDB$SEED is a strange vehicle. The purpose of its existence is the quick provisioning of PDBs. When you “create” a new pluggable database it will be cloned from the PDB$SEED. The Multitenant team has taken this design decision a long time ago. And the PDB$SEED is read-only and not supposed to get any changes by a user. As a result a lot of other things happened. The _ORACLE_SCRIPT parameter got introduced. And so on.
Anyhow, in the above screen shot you spot 6 options/components to be created in the CDB$ROOT. But none of them in PDB$SEED.
- Don’t include APEX in CDB$ROOT and install it later in the PDB locally
- Click only the options you want and need in CDB$ROOT
- Click the same options “Include in PDBs” when necessary
The last bullet point is the one where you need to be careful with. If you miss the click for, lets say “Oracle OLAP” you will have the OLAP option in the CDB$ROOT only. This may or may not be ok. You have to justify carefully. If you dn’t click the check box “Include in PDBs” the OLAP option won’t be in the PDB$SEED. And all newly provisioned PDBs won’t have it.
The good part:
If you created the option in the CDB$ROOT only you’ll ease your plugin operations later on as you minimize the chance to see a situation where a PDB has an option/component but the CDB$ROOT misses it.
The not-so-good part:
Your upgrade of the CDB$ROOT will take longer, you may need patches for components you may not even use (OJVM is one of the usual suspects).
I learned today that a bug got logged for the DBCA behavior:
Bug 24306129 : DBCA HELP DOES NOT MENTION ‘INCLUDE IN PDBS’ CHECKBOX IN DB OPTIONS SELECTION
But I didn’t verify the behavior in Oracle 18c yet.