RAC 完整显示 crs_stat 命令中 name 列的脚本

本文介绍了一种改进的crs_stat脚本,用于更直观地显示Oracle RAC集群中各节点进程的状态,包括ASM、LSNR、GS、ONS、VIP等,并通过示例展示了如何使用该脚本来完整显示进程名称,简化操作过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

通过这个脚本,可以完整的显示进程的名称。我们操作的时候,就方便很多了。

---------------------------------------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值