【RAC】使用一条“ps”命令获取Linux环境下全部RAC集群进程信息

  如何仅使用一条ps命令便能获取到所有与RAC集群进程相关的信息。
  从所使用的命令角度上看很简单,仅需使用ps命令结合grep命令便能实现。问题关键是需要确定检索哪些关键字。

1.与RAC集群有关的进程
1)常驻系统的通用进程
ocssd.bin
evmd.bin
evmlogger.bin
crsd.bin

这些通用进程需要在各种平台和数据库版本上都会启动。

2)特有进程
oprocd: 在UNIX平台当第三方集群软件为运行时会启动该进程;在Linux平台上会在Oracle 10.2.0.4这个版本上启动该进程
oclsvmon.bin: 随第三方集群软件启动而启动的进程
oclsomon.bin: 在Oracle 10.2.0.1平台上启动的用于检查ocssd.bin
diskmon.bin: 在Oracle 11.1.0.7版本中针对Exadata启动的新进程
oclskd.bin: 在Oracle 11.1.0.6版本上当数据库实例出现hang死现象后,该进程用于重新启动节点

注意:以上所有与RAC集群相关的进程中ocssd.bin、oprocd.bin和oclsomon.bin这三个进程出现异常被杀死或停止时都会导致节点重启,其他进程出现问题后会自动重新启动。

2.针对RAC集群进程给出查询命令
这里的RAC操作系统环境是Linux,Oracle版本是10.2.0.3。
我们使用操作系统“ps -ef | grep -v grep | grep -E 'init|d.bin|ocls|oprocd|diskmon|evmlogger|PID'”(这里用到了grep的-E正则表达式功能)命令完成我们的任务。
这里给处理需要检索的关键字信息。

RAC第一节点命令执行后的显示结果如下所示:
secdb1@secdb1 /home/oracle$ ps -ef | grep -v grep | grep -E 'init|d.bin|ocls|oprocd|diskmon|evmlogger|PID'
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Feb10 ?        00:00:06 init [5]
root      5666     1  0 Feb10 ?        01:01:52 /bin/sh /etc/init.d/init.cssd fatal
root      5668     1  0 Feb10 ?        00:32:18 /oracle/crs/oracle/product/10.2.0/crs/bin/crsd.bin reboot
root      6063  5666  0 Feb10 ?        00:00:00 /bin/sh /etc/init.d/init.cssd daemon
oracle    6090  5663  0 Feb10 ?        00:01:18 /oracle/crs/oracle/product/10.2.0/crs/bin/evmd.bin
oracle    6224  6189  0 Feb10 ?        00:03:59 /oracle/crs/oracle/product/10.2.0/crs/bin/ocssd.bin
oracle    6512  6090  0 Feb10 ?        00:00:03 /oracle/crs/oracle/product/10.2.0/crs/bin/evmlogger.bin -o /oracle/crs/oracle/product/10.2.0/crs/evm/log/evmlogger.info -l /oracle/crs/oracle/product/10.2.0/crs/evm/log/evmlogger.log


3.小结
在查看RAC集群进程的过程中最关键的就是了解进程信息和功能,在此基础上操作系统命令仅仅是工具而已。

Good luck.

secooler
11.04.19

-- The End --

请使用浏览器的分享功能分享到微信等