If you are using pfile, it must be a text file on local filesystem. If using spfile, then it can be in the following locations.
- a filesystem file spfile on local filesystem
- spfile on shared device
- a ASM file in a ASM diskgroup (only for spfile for instances after 11.2)
Here are steps to put ASM spfile on a shared device.
1. Edit the pfile and make sure all the parameters could be used for all instances.
2. Login to ASM with sqlplus and startup nomount with pfile.
3. Run the following commands to create a new spfile from pfile. Shutdown the database after creating the spfile.
SQL> create spfile=[shared_device] from pfile; SQL> Shutdown immediate
4. Backup the pfile to a new filename.
5. Modify the pfile to have only the following entry.
spfile=[shared_device]
6. Do step 4 and 5 on remote nodes.
7. Startup the instances on all nodes with sqlplus to see if it works.
8. If all works, update the OCR ASM registry to have the new spfile location with srvctl command.
Usage: srvctl modify asm -n [node_name] -i [asm_inst_name] [-o oracle_home] [-p spfile]
Here,
-n [node] Node name
-i [asm_inst_name] ASM instance name
-o [oracle_home] ORACLE_HOME path
-p [spfile] Server parameter file path
9. Repeat step 8 for all nodes.
10. Test instance startup with srvctl on all nodes.