#!/bin/sh # Sample 11gR2 CRS resource status query script # gives output similar to crs_stat -t in 11gR1 # Asanga Pradeep awk \ 'BEGIN {printf "%-35s %-25s %-18s %-18s\n", "Resource Name", "Type", "Target","State"; printf "%-35s %-25s %-18s %-18s\n", "-----------", "------", "-------","--------";}' crsctl stat res | egrep -w "NAME|TYPE|TARGET|STATE" | sed -e "s/ / /g" | awk \ 'BEGIN { FS="="; state = 0; } $1~/NAME/ {appname = $2; state=1}; state == 0 {next;} $1~/TYPE/ && state == 1 {apptype = $2; state=2;} $1~/TARGET/ && state == 2 {apptarget = $2; state=3;} $1~/STATE/ && state == 3 {appstate = $2; state=4;} state == 4 { split(apptarget,targetarray,", "); x=length(targetarray); split(appstate,statearray,", "); for(ix=1;ix<=x;ix++) printf "%-35s %-25s %-18s %-18s\n", appname, apptype,targetarray[ix], statearray[ix]; state=0;}'
Output
Resource Name Type Target State ----------- ------ ------- -------- ora.CLUSTERDG.dg ora.diskgroup.type ONLINE ONLINE on rac4 ora.CLUSTERDG.dg ora.diskgroup.type ONLINE ONLINE on rac5 ora.DATA.dg ora.diskgroup.type ONLINE ONLINE on rac4 ora.DATA.dg ora.diskgroup.type ONLINE ONLINE on rac5 ora.FLASH.dg ora.diskgroup.type ONLINE ONLINE on rac4 ora.FLASH.dg ora.diskgroup.type ONLINE ONLINE on rac5 ora.LISTENER.lsnr ora.listener.type ONLINE ONLINE on rac4 ora.LISTENER.lsnr ora.listener.type ONLINE ONLINE on rac5 ora.LISTENER_SCAN1.lsnr ora.scan_listener.type ONLINE ONLINE on rac5 ora.asm ora.asm.type ONLINE ONLINE on rac4 ora.asm ora.asm.type ONLINE ONLINE on rac5 ora.cvu ora.cvu.type OFFLINE OFFLINE ora.gsd ora.gsd.type OFFLINE OFFLINE ora.gsd ora.gsd.type OFFLINE OFFLINE ora.net1.network ora.network.type ONLINE ONLINE on rac4 ora.net1.network ora.network.type ONLINE ONLINE on rac5 ora.oc4j ora.oc4j.type OFFLINE OFFLINE ora.ons ora.ons.type ONLINE ONLINE on rac4 ora.ons ora.ons.type ONLINE ONLINE on rac5 ora.rac11g2.db ora.database.type ONLINE ONLINE on rac4 ora.rac11g2.db ora.database.type ONLINE ONLINE on rac5 ora.rac11g2.test.svc ora.service.type ONLINE ONLINE on rac4 ora.rac11g2.test.svc ora.service.type ONLINE ONLINE on rac5 ora.rac4.vip ora.cluster_vip_net1.type ONLINE ONLINE on rac4 ora.rac5.vip ora.cluster_vip_net1.type ONLINE ONLINE on rac5 ora.registry.acfs ora.registry.acfs.type ONLINE ONLINE on rac4 ora.registry.acfs ora.registry.acfs.type ONLINE ONLINE on rac5 ora.scan1.vip ora.scan_vip.type ONLINE ONLINE on rac5
Related Post
Script to get full name of the resources from crs_stat
Update 13 May 2013
In the above script both state and host name are in the same column. Below script will have a separate column for state and hostname
#!/bin/sh # Sample 11gR2 CRS resource status query script # gives output similar to crs_stat -t in 11gR1 # Asanga Pradeep awk \ 'BEGIN {printf "%-35s %-25s %-18s %-18s %-18s\n", "Resource Name", "Type", "Target","State","Host"; printf "%-35s %-25s %-18s %-18s %-18s\n", "-------------", "------", "-------","--------","----------";}' crsctl stat res | egrep -w "NAME|TYPE|TARGET|STATE" | sed -e "s/ / /g" | awk \ 'BEGIN { FS="="; state = 0; } $1~/NAME/ {appname = $2; state=1}; state == 0 {next;} $1~/TYPE/ && state == 1 {apptype = $2; state=2;} $1~/TARGET/ && state == 2 {apptarget = $2; state=3;} $1~/STATE/ && state == 3 {appstate = $2; state=4;} state == 4 { split(apptarget,targetarray,", "); x=length(targetarray); split(appstate,statearray,", "); for(ix=1;ix<=x;ix++){ split(statearray[ix],statehostarray," "); printf "%-35s %-25s %-18s %-18s %-18s\n", appname, apptype,targetarray[ix], statehostarray[1], statehostarray[3]; state=0;} }'Output
Resource Name Type Target State Host ------------- ------ ------- -------- ---------- ora.CLUSTER_DG.dg ora.diskgroup.type ONLINE ONLINE rhel6m1 ora.CLUSTER_DG.dg ora.diskgroup.type ONLINE ONLINE rhel6m2 ora.DATA.dg ora.diskgroup.type ONLINE ONLINE rhel6m1 ora.DATA.dg ora.diskgroup.type ONLINE ONLINE rhel6m2 ora.FLASH.dg ora.diskgroup.type ONLINE ONLINE rhel6m1 ora.FLASH.dg ora.diskgroup.type ONLINE ONLINE rhel6m2 ora.MYLISTENER.lsnr ora.listener.type ONLINE ONLINE rhel6m1 ora.MYLISTENER.lsnr ora.listener.type ONLINE ONLINE rhel6m2 ora.MYLISTENER_SCAN1.lsnr ora.scan_listener.type ONLINE ONLINE rhel6m1 ora.asm ora.asm.type ONLINE ONLINE rhel6m1 ora.asm ora.asm.type ONLINE ONLINE rhel6m2 ora.cvu ora.cvu.type ONLINE ONLINE rhel6m1 ora.gsd ora.gsd.type OFFLINE OFFLINE ora.gsd ora.gsd.type OFFLINE OFFLINE ora.net1.network ora.network.type ONLINE ONLINE rhel6m1 ora.net1.network ora.network.type ONLINE ONLINE rhel6m2 ora.oc4j ora.oc4j.type ONLINE ONLINE rhel6m1 ora.ons ora.ons.type ONLINE ONLINE rhel6m1 ora.ons ora.ons.type ONLINE ONLINE rhel6m2 ora.registry.acfs ora.registry.acfs.type ONLINE ONLINE rhel6m1 ora.registry.acfs ora.registry.acfs.type ONLINE ONLINE rhel6m2 ora.rhel6m1.vip ora.cluster_vip_net1.type ONLINE ONLINE rhel6m1 ora.rhel6m2.vip ora.cluster_vip_net1.type ONLINE ONLINE rhel6m2 ora.scan1.vip ora.scan_vip.type ONLINE ONLINE rhel6m1 ora.std11g2.db ora.database.type ONLINE ONLINE rhel6m1 ora.std11g2.db ora.database.type ONLINE ONLINE rhel6m2 ora.std11g2.myservice.svc ora.service.type ONLINE ONLINE rhel6m1 ora.std11g2.myservice.svc ora.service.type ONLINE ONLINE rhel6m2