There are couple of ways of finding if the database was started with spfile or pfile.
One way would be tell show the check the value of parameter spfile, if it returns blank then database was started by pfile.
— belows show database was started by spfile
SQL> show parameter spfile;
NAME TYPE VALUE
—— —— ————————————————
spfile string /u01/apps/oracle/10g/dbs/spfileorcltest.ora
Another way to find would be set the parameter with scope=spfile, if database was started with spfile one will be able to set the value if it’s started with pfile you will see the “ORA-32001: write to spfile requested but no SPFILE specified at startup”. Note: You can set the new value to be the same as current value of the parameter, it doesn’t have to be a different one.
SQL> ALTER SYSTEM set open_cursors=300 scope=spfile;
ALTER SYSTEM set open_cursors=300 scope=spfile;
ERROR at line 1:
ORA-32001: write to spfile requested but no SPFILE specified at startup