In 12c we also have one SPFILE which store information for the initialization parameters, it’s global for the entire CDB. We can also modify some of the parameters for specific PDB, but does that information is written into the SPFILE ?
Lets see which parameters we can modify at PDB level.
Until this release 18.104.22.168, there are 185 init parameters that can be modified at PDB level.
In order do modify parameters at PDB level we need to be connected to PDB container for which we want to make the modification. If we are connected at ROOT container the parameter modification will take place for entire CDB.
Now lets modify the same parameter at PDB level
I’ve modified successfully the parameter at ROOT container and PDB1 container, now lets create PFILE and see the changes.
This is the content from initdb12c.ora
As we can see only the information about CDB is stored in the SPFILE, so the next question is where does the init parameters for the PDBs are stored?
They are stored in the data dictionary PDB_SPFILE$ table. The values are written in PDB_SPFILE$ only if we specify scope=spfile/both.
Every time when we open a PDB if that particular PDB has its own values for some of the init parameters the values from SPFILE are overwritten with the values from PDB_SPFILE$.
Also, when we unplug a PDB if that particular PDB has some its own init parameters defined the values are extracted from PDB_SPFILE$.
In order to reset the value we use alter system reset …