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 126.96.36.199 and 188.8.131.52. 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 184.108.40.206. 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!
- MOS Note: 2500678.1 – PDB$SEED Database is in mount stage a after applying Jan 2019 DB PSU Patch 220.127.116.11.190115
That is not nice. Actually the bug 29250821 for this issue is a duplicate of bug 25107334 which is fixed since Oracle 18.104.22.168. 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
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.