There usually a philosophic battle happening when it comes to underscore parameters. The official statement is more or less: It’s an underscore, hence it is undocumented and you shouldn’t touch it unless Oracle Support advises you to do so. I agree in many cases. But in this specific one, I don’t. And in this post I will explain why you should set _EXCLUDE_SEED_CDB_VIEW=FALSE in all your singe- and Multitenant environments. Always!

A bit of history

At first, a little bit of a history excursion. This parameter wasn’t an underscore in Oracle 12.1. You can find it as EXCLUDE_SEED_CDB_VIEW in and The idea of the parameter is to hide objects, files etc belonging to the “untouchable” PDB$SEED. While I can see the intention, I was never a fan of hiding any file extensions on whatever OS I was working on. Windows is famous for introducing a big backdoor for numerous virus issues by hiding extensions by default. And my Mac OSX has a similar option.

Anyway, this parameter morphed into an underscore parameter since Oracle Database I blogged about it a while ago:

A real world example

Arun Gupta informed me that there’s an issue with the Jan 2019 RU. When you apply it, your PDB$SEED may not return into regular READ ONLY mode but stays in MOUNT. Thanks Arun!

That is not nice. Actually the bug 29250821 for this issue is a duplicate of bug 25107334 which is fixed since Oracle As a result of this issue, the datapatch run does not complete for PDB$SEED, and hence future PDBs cloned from the seed my lack the correct SQL pieces.

But regardless of this issue, I’ve had a discussion with a German customer a while ago about checking the correct run of datapatch in ALL containers, including PDB$SEED. For this purpose you need to set EXCLUDE_SEED_CDB_VIEW=FALSE in Oracle 12.1 or _EXCLUDE_SEED_CDB_VIEW=FALSE since Oracle 12.2.

Otherwise your scripts won’t detect the missing changes in PDB$SEED.

A recommendation

I recommend to all the customer I’m working with or who attend one of our workshops where we speak about Oracle Multitenant to set _EXCLUDE_SEED_CDB_VIEW=FALSE in all their Multitenant environments. And if you set it in a non-CDB environment, it does not do any damage, no worries.

This avoids that you may oversee an important thing regarding the PDB$SEED giving you trouble afterwards.

For me this is another perfect example where “hiding” something does not make things easier but increases the potential for failures and mistakes. You’ll find it always set to FALSE in our hands-on lab environments. Please don’t hesitate to do the same in your environments.



Share this: