RAC常用的脚本说明,参考我的Blog:
Oracle RAC常用维护工具和命令
http://blog.youkuaiyun.com/xujinyang/article/details/6829620
crs_stat命令在显示上比srvctl直观。先查询一下:
[oracle@rac1 u01]$ crs_stat -t
NameTypeTargetStateHost
------------------------------------------------------------
ora....SM2.asm applicationONLINEONLINErac1
ora....C1.lsnr applicationONLINEONLINErac1
ora.rac1.gsdapplicationONLINEONLINErac1
ora.rac1.onsapplicationONLINEOFFLINE
ora.rac1.vipapplicationONLINEONLINErac1
ora....SM1.asm applicationONLINEONLINErac2
ora....C2.lsnr applicationONLINEONLINErac2
ora.rac2.gsdapplicationONLINEONLINErac2
ora.rac2.onsapplicationONLINEOFFLINE
ora.rac2.vipapplicationONLINEONLINErac2
可以直观的列出各节点进程的状态。但是这个命令的不足之处,就是Name列,不能显示全,那么在使用的时候就有点不方便。比如我们启动和关闭相关进程的时候。
比如:
[oracle@rac1 u01]$ crs_start ora.rac2.ons
Attempting to start `ora.rac2.ons` on member `rac2`
Start of `ora.rac2.ons` on member `rac2` succeeded.
[oracle@rac1 u01]$ crs_start ora.rac1.ons
--我们这里要写全进程的名称,如果名称过长,就不能显示全。
Attempting to start `ora.rac1.ons` on member `rac1`
Start of `ora.rac1.ons` on member `rac1` succeeded.
[oracle@rac1 u01]$ crs_stat -t
NameTypeTargetStateHost
------------------------------------------------------------
ora....SM2.asm applicationONLINEONLINErac1
ora....C1.lsnr applicationONLINEONLINErac1
ora.rac1.gsdapplicationONLINEONLINErac1
ora.rac1.onsapplicationONLINEONLINErac1
ora.rac1.vipapplicationONLINEONLINErac1
ora....SM1.asm applicationONLINEONLINErac2
ora....C2.lsnr applicationONLINEONLINErac2
ora.rac2.gsdapplicationONLINEONLINErac2
ora.rac2.onsapplicationONLINEONLINErac2
ora.rac2.vipapplicationONLINEONLINErac2
无意中网上看到一个脚本,很好的解决了这个问题,感谢作者的辛勤劳动。
crs_stat.sh
awk /
'BEGIN {printf "%-30s %-10s %-10s %-10s/n","Name","Target","State","Host";
printf "%-30s %-10s %-10s %-10s/n","------------------------------","----------", "---------","-------";}'
crs_stat | awk /
'BEGIN { FS="=| ";state = 0;}
$1~/NAME/ {appname = $2; state=1};
state == 0 {next;}
$1~/TARGET/ && state == 1 {apptarget = $2; state=2;}
$1~/STATE/ && state == 2 {appstate = $2; apphost = $4; state=3;}
state == 3 {printf "%-30s %-10s %-10s %-10s/n", appname,apptarget,appstate,apphost; state=0;}'
效果如下:
[oracle@rac1 u01]$ sh crs_stat.sh
NameTargetStateHost
------------------------------ ---------- ----------------
ora.rac1.ASM2.asmONLINEONLINErac1
ora.rac1.LISTENER_RAC1.lsnrONLINEONLINErac1
ora.rac1.gsdONLINEONLINErac1
ora.rac1.onsONLINEONLINErac1
ora.rac1.vipONLINEONLINErac1
ora.rac2.ASM1.asmONLINEONLINErac2
ora.rac2.LISTENER_RAC2.lsnrONLINEONLINErac2
ora.rac2.gsdONLINEONLINErac2
ora.rac2.onsONLINEONLINErac2
ora.rac2.vipONLINEONLINErac2
通过这个脚本,可以完整的显示进程的名称。我们操作的时候,就方便很多了。
---------------------------------------------------------------------------------------------------