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.