Hi all,
I hope you’re doing good.
I got a call from a client, DBA team was trying to change some parameters on ASM and getting an error:
alter system set sga_target = 0 scope=spfile sid='*';
*
ERROR at line 1:
ORA-32000: write to SPFILE requested but SPFILE is not modifiable
You cannot change system wide parameters when cluster is in rolling mode. The reasoning behind disallowing parameter updates is that the other version of software might not be able to recognize this parameter, or might be have different side effects because of the parameter update.
The issue happened because client was applying some patches on Grid Infrastructure, there is a really useful note on My Oracle Support explaining about the issue: Document 2127698.1 (ORA-32000: write to SPFILE requested but SPFILE is not modifiable on 12c RAC Environment for ASM spfile)
We quickly verified on ASM:
SELECT SYS_CONTEXT('SYS_CLUSTER_PROPERTIES', 'CLUSTER_STATE') FROM DUAL;
SYS_CONTEXT('SYS_CLUSTER_PROPERTIES','CLUSTER_STATE')
--------------------------------------------------------------------
In Rolling Patch
Long story short, some security team ran vulnerability tools and listed JDK under GRID_HOME as vulnerable in only one node. Then, DBA team applied the patch only in the node where they have the risk raised. Well, when you are running a cluster, the patch level must be the same across the cluster nodes. This info also can be viewed on Oracle Official Documentation: About Oracle Grid Infrastructure Software Patch Levels, below there is a screenshot from the documentation:

After this, the client DBA applied the “missing” patch on the remaining node(s) and was able to change the parameters on ASM SPFILE.
This blog post is really small, but I wish it is helpful!
Vinicius