Using a block device for the ASM RAC instance spfile
Benefits:
Removes the clusterware layer in configuration stack, preventing outages to the ASM instance (and instances using the ASM disk) from a clusterware failure.
Disadvantages:
Creates a minor increased level of complexity in restores and crash debugging
Overview Method:
1. Create an ASM instance using a normal spfile on a cluster mount point,
such as an OCFS2 mount.
2. Copy ocfs2 spfile to a shared block device using dd command
3. shutdown ASM instance
4. Delete original spfile on ocfs2 mount point
5. Run srvctl modify to use spfile on block device
6. Start ASM instance
7. Create and edit a pfile with the spfile location parameter only
Detail Method:
1. Create an ASM instance using a normal spfile on a cluster mount point, such as an
OCFS2 mount.
Using dbca, create you ASM instance using an OCSF2 formated mount point shared
among the RAC nodes.
Example: /ocfs2/asmspfile/spfile_+ASM.ora
2. Copy ocfs2 spfile to a shared block device using dd command
After ASM instance has been created, run the following to copy the contents of the
spfile to the block device:
dd if=/ocfs2/asmspfile/spfile_+ASM.ora of=/dev/asmspfile
(Where /dev/asmspfile is a simple shared formated ext3 disk mounted to all nodes in
the cluster.)
3. shutdown ASM instance
Use srvctl to shut dow the instance, not sqlplus.
srvctl stop asm -n <Node1,Node2,etc>
4. Delete original spfile on ocfs2 mount point
rm /ocfs2/asmspfile/spfile_+ASM.ora
5. Run srvctl modify to use spfile location to the block device location
When starting the ASM instance using srvctl the path for the spfile is embedded in the
configuration when you create the ASM instance. You need to change it to the block
device location or the next time you restart with srvctl or reboot the server it will
try to use the original spfile location. Here is how:
srvctl modify asm -n Linux1 -i +ASM1 -o \
/u01/app/oracle/product/11.1.0/asm_1 -p /dev/asmspfile
srvctl modify asm -n Linux2 -i +ASM2 -o \
/u01/app/oracle/product/11.1.0/asm_1 -p /dev/asmspfile
(Where +ASM1 and +ASM2 are the two ASM instances in the cluster (run one of these
commands for each instance) and /u01/app/oracle/product/11.1.0/asm_1 is the
ORACLE_HOME of the ASM instances and /dev/asmspfile is the block device you copied
the spfile to using the "dd" commands.)
6. Start ASM instance
Again, use srvctl, not sqlplus.
svrctl start asm -n <Node1,Node2,etc>
Tail the alert log in $ORACLE_BASE/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log and
verify it is using the spfile from the block device.
(Where ASM1 is the instance name.)
7. Create and edit a pfile with only the spfile location parameter only
On each node crate and edit the $ORACLE_HOME/dbs/init+ASM<x>.ora file and add the
following parameter:
spfile='/dev/asmspfile'
Do not add any additional parameters to the init.ora, as they will overwrite what is
in the spfile if added after the spfile parameter.
8. Test stopping and starting the ASM instance using sqlplus
sqlplus "/ as sysasm"
shutdown immediate
startup
exit
Tail the alert log in $ORACLE_BASE/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log and
verify it is using the spfile from the block device.
(Where ASM1 is the instance name.)