You may face with one of the errors below or such while you are starting your database, probably after you alter some parameters’ values and restart.
ORA-15124 : ASM file name ‘…’ contains an invalid alias name
ORA-01078 : Failure in processing system parameters
So, what you need to do is correct the faulty value in the spfile and retry starting up. However if your database is mounted on ASM and you don’t have a backup, you need to get the spfile which is on ASM. Here are the steps you may follow:
- Logon to your server as Oracle owner, such as oracle
- Get the spfile from ASM:
SQL> CREATE PFILE FROM SPFILE=’+DATA//spfile.ora;
File is saved as /u01/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora over pfile by default.
Alternatively you can specify the output file by giving pfile=’/tmp/pfile.ora’ option to the statement above. If you don’t, it’s better backup your original pfile.
- Change what is wrong in the pfile with your favorite text editor
Note: If there is, remove the line “spfile=’+DATA//spfile.ora'” at the end of the file. If you don’t, Oracle read the spfile in ASM as it’s set in that line.
- Create a new spfile from the pfile you have just edited:
SQL> STARTUP MOUNT PFILE=’/u01/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora’;
SQL> CREATE SPFILE=’+DATA//spfile.ora’ FROM PFILE;
- You can see that the spfile in ASM has been changed. You may use asmcmd utility to do this:
ASMCMD> cd +DATA/
ASMCMD> ls -l spfile*
- Now, it’s time to tidy up and make everything as it supposed to be. Shutdown your database first:
SQL> SHUTDOWN IMMEDIATE;
- Change the pfile back to its original state by restoring pfile backup you got in step 2 or create a new one. Its contents should be like:
(Backup the new pfile you created first, just in case)
- Start your database
If it’s a RAC:
$ srvctl start database -d
- See that the spfile being used is the one in the ASM:
SQL> SHOW PARAMETER spfile;