1. 增加进程运行状态检测,异常时自动重启

    由于osw不是守护进程,因此在停机维护以后,很有可能忘记启动,后续在进行问题分析的时候,缺少了有效的数据,因此可以将osw配置成crontab,这样就避免了主机重启以后采集数据丢失的情况。

[oracle@rac11g1 oswbb]$ cat oswcheck.sh 

#!/bin/sh

######################################################################

# Copyright (c)  2016 by Ducw

# oswcheck.sh

# This program check OSWatcher run status, if not run, start OSWatcher

# oswcheck crontab config

# 1 * * * * /oracle/oswbb/oswcheck.sh > /oracle/oswbb/oswcheck.log 2>/oracle/oswbb/oswcheck.err

######################################################################

OSWRUNFLAG=`ps -ef | grep OSWatcher.sh | grep -v grep | wc -l`

CHECKDATA=`date "+%Y-%m-%d %H:%M:%S"`

if [[ ${OSWRUNFLAG} -eq 1 ]]; then

  echo "================================================================================="

  echo "OSWatcher is running at "${CHECKDATA}

  echo "================================================================================="

  echo ""

else

  echo "================================================================================="

  echo "OSWatcher is not running at "${CHECKDATA}

  echo "================================================================================="

  echo ""

  echo "Begin to start startOSWbb.sh"

  cd /oracle/oswbb

  nohup ./startOSWbb.sh 10 72 &

fi

配置crontab

[oracle@rac11g1 oswbb]$ crontab -l

1* * * * /oracle/oswbb/oswcheck.sh > /oracle/oswbb/oswcheck.log 2>/oracle/oswbb/oswcheck.err


2. 调整 ps 输出进程信息

    默认情况下,会输出所有的进程信息,针对数据库主机,信息会比较多,每次开sr,巨大的文件上传也是一个问题。因此只输出CPU使用率较高的前100的进程信息或内存使用前100的进程,这样速度就会快很多。当然这也存在某些情况下,丢失部分有用信息。

[oracle@rac11g1 oswbb]$ cat psmemsub.sh

      HP-UX|HI-UX)

UNIX95=1 ps -e -o user,pid,ppid,pri,pcpu,cpu,vsz,sz,wchan,state,etime,args | head -1 >> $1

UNIX95=1 ps -e -o user,pid,pcpu,ppid,pri,cpu,vsz,sz,wchan,state,etime,args | sort -nr -k 3 | head -100 >> $1


3. 新增心跳网卡监控

    这段信息来至MOS,心跳网卡的监控在RAC环境中尤为重要。

    设置私网间通讯检查: 

a) 拷贝Exampleprivate.net 为 private.net 到同一个目录下。 

b).在private.net中找到您对应的系统平台,替换下面的private_nodename1 , private_nodename2 为具体的私网IP或者主机名 

traceroute -r -F private_nodename1 

traceroute -r -F private_nodename2 

c). 将private.net中其它的平台部分删除。 

d). 千万不要删除下面的内容: 

rm locks/lock.file 


4. 快速分析某段时间的CPU/内存的使用率

    Linux中的paste命令,可以将多个文件的记录进行拼接,同时显示出来。oswtop的数据形式如下,包含时间信息,以及cpu使用率信息。因此我们可以截取这两部的内容,拼接到一个文件,然后对特定字段进行排序操作。这样就可以帮助我们快速定位负载高的时间点。当然也可以使用java图形工具的形式。只是感觉脚本定制的方式更便捷,也不受环境的约束。

    当然这种方法也可以适用于内存等信息的分析。


zzz ***Wed Jan 27 08:53:08 CST 2016

top - 08:53:10 up 9 min,  3 users,  load average: 1.22, 2.01, 1.27

Tasks: 259 total,   2 running, 257 sleeping,   0 stopped,   0 zombie

Cpu(s):  1.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   4050948k total,  3643476k used,   407472k free,   217272k buffers

Swap:  4095992k total,        0k used,  4095992k free,  1929572k cached


[root@rac11g1 oswtop]# cat rac11g1_top_16.01.27.0800.dat | grep ^zzz > top_time.txt

[root@rac11g1 oswtop]# cat rac11g1_top_16.01.27.0800.dat | grep ^Cpu > top_cpu.txt


[root@rac11g1 oswtop]#  paste -d ' ' top_time.txt top_cpu.txt > result.txt


[root@rac11g1 oswtop]# cat result.txt 

zzz ***Wed Jan 27 08:49:08 CST 2016 Cpu(s):  3.0%us,  1.0%sy,  0.0%ni, 94.1%id,  2.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:49:38 CST 2016 Cpu(s):  1.0%us,  1.0%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:50:08 CST 2016 Cpu(s):  2.0%us,  0.0%sy,  0.0%ni, 96.1%id,  0.0%wa,  1.0%hi,  1.0%si,  0.0%st

zzz ***Wed Jan 27 08:50:38 CST 2016 Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:51:08 CST 2016 Cpu(s):  1.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:51:38 CST 2016 Cpu(s): 14.0%us,  1.0%sy,  0.0%ni, 85.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:52:08 CST 2016 Cpu(s):  1.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:52:38 CST 2016 Cpu(s):  1.0%us,  1.9%sy,  0.0%ni, 78.6%id, 17.5%wa,  1.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:53:08 CST 2016 Cpu(s):  1.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:53:38 CST 2016 Cpu(s):  2.0%us,  2.0%sy,  0.0%ni, 95.1%id,  0.0%wa,  1.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:54:09 CST 2016 Cpu(s):  1.0%us,  0.0%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  1.0%si,  0.0%st

zzz ***Wed Jan 27 08:54:39 CST 2016 Cpu(s):  1.0%us,  1.0%sy,  0.0%ni, 98.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:55:09 CST 2016 Cpu(s):  2.0%us,  2.0%sy,  0.0%ni, 96.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:55:39 CST 2016 Cpu(s):  1.0%us,  2.0%sy,  0.0%ni, 96.1%id,  0.0%wa,  1.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:56:09 CST 2016 Cpu(s):  5.9%us,  2.0%sy,  0.0%ni, 87.3%id,  4.9%wa,  0.0%hi,  0.0%si,  0.0%st


[root@rac11g1 oswtop]# sort -n -k 9 result.txt  经过排序后的内容

......

zzz ***Wed Jan 27 08:55:39 CST 2016 Cpu(s):  1.0%us,  2.0%sy,  0.0%ni, 96.1%id,  0.0%wa,  1.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:50:08 CST 2016 Cpu(s):  2.0%us,  0.0%sy,  0.0%ni, 96.1%id,  0.0%wa,  1.0%hi,  1.0%si,  0.0%st

zzz ***Wed Jan 27 08:53:38 CST 2016 Cpu(s):  2.0%us,  2.0%sy,  0.0%ni, 95.1%id,  0.0%wa,  1.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:55:09 CST 2016 Cpu(s):  2.0%us,  2.0%sy,  0.0%ni, 96.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:49:08 CST 2016 Cpu(s):  3.0%us,  1.0%sy,  0.0%ni, 94.1%id,  2.0%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:56:09 CST 2016 Cpu(s):  5.9%us,  2.0%sy,  0.0%ni, 87.3%id,  4.9%wa,  0.0%hi,  0.0%si,  0.0%st

zzz ***Wed Jan 27 08:51:38 CST 2016 Cpu(s): 14.0%us,  1.0%sy,  0.0%ni, 85.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st


    由于文件是时间顺序生成的,因此时间和对应的资源使用率可以一致对应。剩下的工作就是自由发挥了。当然你也可以写出更优雅的shell脚本。