With version 11gR2 ASM spfile can be stored in ASM diskgroup and by default Oracle Installer will put it there. So if you want to create pfile from spfile your ASM instance should be up and running.
If you have incorrect parameter in ASM spfile which is blocking ASM to start than you have slight problem. You cannot easily create pfile from spfile, correct incorrect parameter in pfile and recreate spfile, as you would do for database.
But don't worry, there are several options well explained available on net. I would recommend to practice all scenarios in you test environment if you want to avoid big stress in production later.
When I had problems with broken ASM parameter file (mostly in test/dev environment), I would always end up searching my notes or blog posts on how to solve this problem.
I knew that parameters were written directly in ASM disk header and I could extract them from there, or maybe check parameters in ASM alert log, but in back of my brain I was always thinking that there must be simpler way.
Thanks to Norman now I know how to quickly change incorrect parameter and keep other parameters intact.
I have used this trick few days ago and it worked perfectly. This blog post is just reminder which I know it will be useful for me in the future.
In my environment I have Oracle Restart with Oracle Database 12.1.0.2.0.
After starting my test server I have noticed that something is wrong because ASM was unable to start.
$ ./srvctl status asm ASM is not running.
When I tried to start ASM manually I have received error:
$ ./srvctl start asm PRCR-1079 : Failed to start resource ora.asm CRS-5017: The resource action "ora.asm start" encountered the following error: ORA-00845: MEMORY_TARGET not supported on this system . For details refer to "(:CLSN00107:)" in "/u01/app/grid/diag/crs/obelix/crs/trace/ohasd_oraagent_grid.trc". CRS-2674: Start of 'ora.asm' on 'obelix' failed
Let's check alert log.
alert+ASM.log Fri May 01 19:40:16 2015 MEMORY_TARGET defaulting to 1128267776. * instance_number obtained from CSS = 1, checking for the existence of node 0... * node 0 does not exist. instance_number = 1 Starting ORACLE instance (normal) (OS id: 4136) Fri May 01 19:40:16 2015 CLI notifier numLatches:3 maxDescs:222 Fri May 01 19:40:16 2015 WARNING: You are trying to use the MEMORY_TARGET feature. This feature requires the /dev/shm file system to be mounted for at least 1140850688 bytes. /dev/shm is either not mounted or is mounted with available space less than this size. Please fix this so that MEMORY_TARGET can work as expected. Current available is 1051975680 and used is 208896 bytes. Ensure that the mount point is /dev/shm for this directory.
So there is problem with MEMORY_TARGET parameter, but how can I disable AMM when my ASM instance is down.
First I had to find location of ASM parameter file. I don’t have GPnP profile as this is single instance setup so I have extracted ASM parameter file location from "ora.asm" resource information.
$ crsctl stat res ora.asm -p | egrep "ASM_DISKSTRING|SPFILE" ASM_DISKSTRING= SPFILE=+DATA/ASM/ASMPARAMETERFILE/registry.253.822856169
Create new parameter file with corrected MEMORY_TARGET parameter.
$ vi /tmp/initASM.ora spfile="+DATA/asm/asmparameterfile/registry.253.862145335" MEMORY_TARGET=0
Start ASM instance using new parameter file.
$ sqlplus / as sysasm SQL*Plus: Release 12.1.0.2.0 Production on Fri May 1 20:04:39 2015 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to an idle instance. SQL> startup pfile=/tmp/initASM.ora ASM instance started Total System Global Area 197132288 bytes Fixed Size 2922520 bytes Variable Size 169043944 bytes ASM Cache 25165824 bytes ASM diskgroups mounted
And woila!
New parameter was applied and I was able to start ASM instance.
Change parameter in ASM spfile.
SQL> alter system set memory_target=0 scope=spfile; System altered.
Restart ASM.
SQL> shutdown immediate; ASM diskgroups dismounted ASM instance shutdown
[grid@obelix bin]$ ./srvctl start asm [grid@obelix bin]$ ./srvctl status asm ASM is running on obelix
ASM instance successfully started with corrected parameter file.
Thanks for the plug!
ReplyDeleteCheers,
Norm.
No problem Norm. Thank you!
ReplyDeleteRegards,
Marko