21c software … where did everything go?

Posted by

Now that 21c is out and you’re all busily downloading it to explore on your local servers, the twitter DMs have already started to come in. Now I can’t detect a panicked tone from the written word, but if I had to guess, there is definitely some panic out there Smile, and most of it stems from this:


“Where did my password file go?”

“Where did my spfile go?”

“Where did the SQLNet configuration files go?”

Did the entire software distribution get dramatically re-shuffled for 21c? No.

In fact, this is a configuration option that goes all the way back to version 18c, when the concept of read-only Oracle Homes was introduced. The justification for a read-only Oracle Home has been covered extensively already in the standard documentation, and by community members such as Tim and Franck, so I won’t rehash that here besides re-iterating that separating configuration data from software binaries has always been a sensible idea.

The only difference you’ll see with 21c is that the read-only configuration is now the default  which is perhaps the cause of the consternation, because for many it is the first time they’ve seen it.

So where are the configuration files? For your spfile and password files, they’ll be under the “dbs” directory that we’ve moved to ORACLE_BASE


and the network configuration files will the new “homes” section under ORACLE_BASE. There will be a folder for each Oracle Home software installation, with a home key similar to what you may have seen in the Windows registry in the past. Under the the home key will be the familiar “network/admin” folder structure.


So no need for any panic. All of your files are still there. They’ve just moved to more sensible places in 21c.

If you’ve got 18c and 19c installations already, they can also be converted to the read-only structure if you want consistency across all of your data centre.

Enjoy your 21c database!


  1. I just installed 21c software and got thinking about $ORACLE_HOME/.patch_storage. I glanced at the documentation and did not see a reference to that dir. Since OH is RO .patch_storage must be moved, but I can’t seem to find it. Would you know where it was moved?

    1. To my knowledge it is still in the same place (under $OH). I just did some roohctl enable/disable on my 19c instance (which has been patched many times) and .patch_storage stays put.

      A read-only OH isn’t read-only “forever” because obviously if you apply a patch, you’ll be modifying large swathes of the binaries. It is read-only in the sense of the standard *running* operation of the database will not write to that location and you wont need to either.

Got some thoughts? Leave a comment

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.