Today I found a glitch about my database instance.When I browsed my files on ASM disks,I found this file,which path was '+DATA/DB_UNKNOWN/parameterfile/spfile.278.186024535'.I used 'ls -al' to see which file linked it,to my surprise,that's '+DATA/orcl/spfileorcl.ora'.How did it generate?
The situation is like this.
When Database instance is not in mount/open status,One uses
CREATE SPFILE='+DATA' FROM PFILE='XXXXXXXXXXXX'
At this time,the database instance doesn't know DB_NAME,either does ASM instance.
So the ASM instance creates spfile on ASM disk with path like this '+DATA/DB_UNKNOWN/parameterfile/spfile.xxx.xxxxxxxx' and links '+DATA/orcl/spfileorcl.ora' to it(the database instance has known $ORACLE_SID based on environment variable).The database instance reads initiator parameter file in wrong path everytime.
How to fix?
1.Backup your spfile.Startup your database instance to open status.
Create pfile='/u01/app/oracle/pfile1' from spfile; Shutdown immediate; Startup pfile='/u01/app/oracle/pfile1';
2.Check parameter DB_NAME
show parameter db_name
db_name shouldn't be NULL
3.Open another terminal window with grid user access to host
4.Check '+DATA/orcl/parameterfile/spfile.xxx.xxxxxxxx',that may be like this 'none->+DATA/orcl/parameterfile/spfile.xxx.xxxxxxxx' when you use 'ls -al',which indicates that's an empty link.
Check '+DATA/DB_UNKNOWN/parameterfile/spfile.xxx.xxxxxxxx',that may be like this '+DATA/orcl/spfileorcl.ora -> +DATA/DB_UNKNOWN/parameterfile/spfile.xxx.xxxxxxxx' when you use 'ls -al'
5.Delete '+DATA/DB_UNKNOWN/parameterfile/spfile.xxx.xxxxxxxx' and the system removes directory '+DATA/DB_UNKNOWN' including all sub directories automatically.The system removes source link file '+data/orcl/spfileorcl.ora' as well.
6.Make alias file link to correct spfile in mandatory path in terminal of ASM instance.
cd +data/orcl mkalias +data/orcl/parameter/spfile.xxx.xxxxxxxxx spfileorcl.ora
7.Verify this by restarting database instance and check parameter spfile.
startup force;
the database instance can startup successfully.
It seems that there's no difference about parameter spfile which equal to '+data/orcl/spfileorcl.ora'.But it links to different file now.