如何仅使用一条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 --