星期四 四月 18, 2013

如何安装独立版的CHM(Oracle Cluster Health Monitor)

     Cluster Health Monitor(以下简称CHM)是一个Oracle提供的工具,用来自动收集操作系统的资源(CPU、内存、SWAP、进程、I/O以及网络等)的使用情况。相对于OSWatcher,CHM直接调用OS的API来降低开销,而OSWatcher则是直接调用UNIX命令;另外,CHM的实时性更强,每秒收集一次数据(在11.2.0.3,改为了5秒一次)。 OSWatcher的优点是可以用traceroute命令检测私网间的连通性,而且生成的数据的保留时间可以设置得很长。如果可以的话,最好是两个工具都安装。

     对于CHM的更多解释,请参考之前的一篇博客:
11gR2 新特性:Oracle Cluster Health Monitor(CHM)简介

    在这篇文章中主要介绍如何安装独立版的CHM。

    CHM会自动安装在下面的软件:
    11.2.0.2 及更高版本的 Oracle Grid Infrastructure for Linux (不包括Linux Itanium) 、Solaris (Sparc 64 和 x86-64)
    11.2.0.3 及更高版本 Oracle Grid Infrastructure for AIX 、 Windows (不包括Windows Itanium)。

      在11.2.0.2之前的集群(10.2到11.2.0.1),可以安装独立版的CHM。目前支持的平台有Linux x86 和Linux x86-64,还有32位的Windows Server 2003 SP 2。独立版的CHM并不一定要安装在集群环境,单机环境也可以使用:
     o 在Linux平台上运行独立版的CHM,要求Linux kernel在2.6.9或之上。另外,一定不能在已经自动安装了CHM的集群环境上再安装单机版的。
     o 可以创建一个新的操作系统用户或者用oracle用户来进行安装,这个用户在RAC的节点间要建立用户等效性。
     o 安装完成后的CHM位于/usr/lib/oracrf,而且在/etc/init.d/init.crfd建立一个init脚本,这样在服务器重启后,只要crf是enabled,就可以自动启动。
     o CHM的数据保存在一个BDB数据库中,这个数据库所在的目录可以在安装CHM的时候用“-b”来指定。


下面是在Linux平台上的10.2.0.4的双节点RAC安装CHM的过程。

1. 下载单机版的CHM:
http://www.oracle.com/technetwork/database/clustering/downloads/ipd-download-homepage-087212.html
下载文件后,仔细阅读附带的README.txt文件。

2. 确保安装CHM的用户配置了用户等效性,可以无需密码ssh到远程节点。

如果要创建独立的用户,请执行:
# useradd -d /opt/crfuser -s /bin/sh -g oinstall crfuser

然后针对这个用户配置ssh,请参考:http://fedoranews.org/dowen/sshkeys/

在本文的例子中用oracle用户来安装。

3. 在一个节点,用oracle用户来解压CHM:
[oracle@rac1 ~]$su - oracle
[oracle@rac1 ~]$mkdir /home/oracle/chm 《==所有节点都要创建
[oracle@rac1 ~]$cd /home/oracle/chm
[oracle@rac1 jane]$ ls
1554900.zip
[oracle@rac1 jane]$ unzip 1554900.zip

4. 在一个节点用oracle用户来安装CHM:

首先要在所有节点都创建存放CHM db的目录:
#mkdir /opt/oracrfdb 《==用root 用户

确定在所有节点都有一个属主为oracle的目录/home/oracle/chm
/home/oracle/chm这个目录是临时用的,安装完后会这个临时目录中的CHM文件会被删除,真正安装完成的CHM在/usr/lib/oracrf。

用oracle安装:

[root@rac1 install]# su - oracle
[oracle@rac1 ~]$ cd /home/oracle/chm/install
[oracle@rac1 chm]$ perl /home/oracle/chm/install/crfinst.pl -i rac1,rac2 -b /opt/oracrfdb -m rac1

BDB path provided is on a root FS. Do you want to continue (Y/n):
Y

Performing checks on nodes: "rac1 rac2" ...
Assigning rac2 as replica

Generating cluster wide configuration file...

Creating a bundle for remote nodes...

Installing on nodes "rac2 rac1" ...

Configuration complete on nodes "rac2 rac1" ...

Please run "$CRFPERLBIN /home/oracle/chm/install/crfinst.pl -f, optionally specifying BDB location

with -b <bdb location> as root on each node to complete the install process.

5. 用root运行脚本:
节点1:
[oracle@rac1 chm]$ su -
Password:
[root@rac1 ~]# perl /home/oracle/chm/install/crfinst.pl -f

Installation completed successfully at /usr/lib/oracrf...

节点2:
[root@rac2 oracle]# perl /home/oracle/chm/install/crfinst.pl -f

Installation completed successfully at /usr/lib/oracrf...

CHM已经在所有节点安装成功。

6. 在所有节点用root身份enable CHM,这样在主机重启后,可以自动启动crf:

节点1:
[root@rac1 ~]# /etc/init.d/init.crfd enable

节点2:
[root@rac2]# /etc/init.d/init.crfd enable

7. 检查CHM状态:
节点1:
[root@rac1 ~]# /etc/init.d/init.crfd status 《==所有进程都已启动

osysmond running with PID=27793.
ologgerd running with PID=27895.

oproxyd running with PID=27910.

[root@rac1 ~]# ps -ef|grep osysmond
root     13234 26646  0 19:01 pts/0    00:00:00 grep osysmond
root     27793 27713  1 18:22 ?        00:00:42 /usr/lib/oracrf/bin/osysmond
[root@rac1 ~]# ps -ef|grep ologgerd
root     13274 26646  0 19:01 pts/0    00:00:00 grep ologgerd
root     27895     1  0 18:22 ?        00:00:04 /usr/lib/oracrf/bin/ologgerd -M -d /opt/oracrfdb
[root@rac1 ~]# ps -ef|grep oproxyd
root     13388 26646  0 19:01 pts/0    00:00:00 grep oproxyd
oracle   27910     1  0 18:22 ?        00:00:00 /usr/lib/oracrf/bin/oproxyd

节点2:
[root@rac2 oracle]# /etc/init.d/init.crfd status《==所有进程都已启动

osysmond running with PID=18321.
ologgerd running with PID=18455.

oproxyd running with PID=18479.

[root@rac2 oracle]# ps -ef|grep osysmond
root     18321 18234  1 18:49 ?        00:00:03 /usr/lib/oracrf/bin/osysmond
root     20065  4162  0 18:53 pts/0    00:00:00 grep osysmond
[root@rac2 oracle]# ps -ef|grep ologgerd
root     18455     1  1 18:49 ?        00:00:02 /usr/lib/oracrf/bin/ologgerd -m rac1 -r -d

/opt/oracrfdb
root     20086  4162  0 18:53 pts/0    00:00:00 grep ologgerd
[root@rac2 oracle]# ps -ef|grep oproxyd
oracle   18479     1  0 18:49 ?        00:00:00 /usr/lib/oracrf/bin/oproxyd
root     20113  4162  0 18:53 pts/0    00:00:00 grep oproxyd

8. 查看CHM的DB所在的目录:
节点1:
[root@rac1 chm]# ls -l  /opt/oracrfdb
total 92652
-rw-r----- 1 root root    643072 Mar 26 19:23 crfalert.bdb
-rw-r----- 1 root root  57147392 Mar 26 19:24 crfclust.bdb
-rw-r----- 1 root root      8192 Mar 26 18:58 crfconn.bdb
-rw-r----- 1 root root    823296 Mar 26 19:23 crfcpu.bdb
-rw-r----- 1 root root    548864 Mar 26 19:23 crfhosts.bdb
-rw-r----- 1 root root    925696 Mar 26 19:23 crfloclts.bdb
-rw-r----- 1 root root    487424 Mar 26 19:23 crfts.bdb
-rw-r----- 1 root root     24576 Mar 26 18:22 __db.001
-rw-r----- 1 root root    319488 Mar 26 18:22 __db.002
-rw-r----- 1 root root   2629632 Mar 26 18:22 __db.003
-rw-r----- 1 root root   2162688 Mar 26 18:22 __db.004
-rw-r----- 1 root root    778240 Mar 26 18:22 __db.005
-rw-r----- 1 root root     49152 Mar 26 18:22 __db.006
-rw-r----- 1 root root  16777216 Mar 26 19:19 log.0000000006
-rw-r----- 1 root root  16777216 Mar 26 19:23 log.0000000007
-rw-r--r-- 1 root root 120000000 Mar 26 18:22 rac1.ldb 《==========

节点2:
[root@rac2 chm]# ls -l  /opt/oracrfdb
total 92636
-rw-r----- 1 root root    397312 Mar 26 19:15 crfalert.bdb
-rw-r----- 1 root root  64159744 Mar 26 19:15 crfclust.bdb
-rw-r----- 1 root root    577536 Mar 26 19:15 crfcpu.bdb
-rw-r----- 1 root root    372736 Mar 26 19:15 crfhosts.bdb
-rw-r----- 1 root root   1011712 Mar 26 19:15 crfloclts.bdb
-rw-r----- 1 root root      8192 Mar 26 19:15 crfrep.bdb
-rw-r----- 1 root root    532480 Mar 26 19:15 crfts.bdb
-rw-r----- 1 root root     24576 Mar 26 18:49 __db.001
-rw-r----- 1 root root    319488 Mar 26 18:49 __db.002
-rw-r----- 1 root root   2629632 Mar 26 18:49 __db.003
-rw-r----- 1 root root   2162688 Mar 26 18:49 __db.004
-rw-r----- 1 root root    778240 Mar 26 18:49 __db.005
-rw-r----- 1 root root     49152 Mar 26 18:49 __db.006
-rw-r----- 1 root root  16777216 Mar 26 19:11 log.0000000006
-rw-r----- 1 root root  16777216 Mar 26 19:15 log.0000000007
-rw-r--r-- 1 root root 120000000 Mar 26 18:49 rac2.ldb 《==========
-rw-r----- 1 root root      8192 Mar 26 19:15 repdhosts.bdb

如何卸载单机版的CHM:

在所有RAC节点分别执行:

1. 用root用户disable CHM:
# /etc/init.d/init.crfd disable

2. 卸载CHM:
/usr/lib/oracrf/install/crfinst.pl -d

3. 手工删除CHM存放数据用的BDB(这个库的地址在安装时指定���。

4. 如果卸载后/usr/lib/oracrf仍然存在,可以手工删除这个目录。

如何使用单机版的CHM来收集性能数据:

方法1:
$oclumon dumpnodeview -allnodes -v -s "2013-03-26 18:00:00" -e "2013-03-26 21:10:00" > /tmp/chm1.txt

方法2:
在使用diagcollection.pl收集数据时,crshome 需要指定CHM的目录而不是CRS的目录:
# /usr/lib/oracrf/bin/diagcollection.pl --collect --crshome /usr/lib/oracrf --chmos --incidenttime

03/26/201312:00:00 --incidentduration 00:05

否则可能会报错:
# /usr/lib/oracrf/bin/diagcollection.pl --collect --crshome /oracle/app/product/10.2.0/crs_1 --chmos --

incidenttime 03/24/201325:00:00 --incidentduration 00:40
Production Copyright 2004, 2010, Oracle.  All rights reserved
Cluster Ready Services (CRS) diagnostic collection tool
Cannot parse master from output: sh: /oracle/app/product/10.2.0/crs_1/bin/oclumon: No such file or directory
diagcollection.pl

星期五 六月 15, 2012

11gR2 新特性:Oracle Cluster Health Monitor(CHM)简介

   Cluster Health Monitor(以下简称CHM)是一个Oracle提供的工具,用来自动收集操作系统的资源(CPU、内存、SWAP、进程、I/O以及网络等)的使用情况。相对于OSWatcher,CHM直接调用OS的API来降低开销,而OSWatcher则是直接调用UNIX命令。另外,CHM的实时性更强,每秒收集一次数据(在11.2.0.3,改为了5秒一次)。 OSWatcher 的优点是可以用traceroute命令检测私网间的连通性,而且生成的数据的保留时间可以设置得很长。如果可以的话,最好是两个工具都使用。

   这些系统资源数据对于诊断集群系统的节点重启、Hang、实例驱逐(Eviction)、性能问题等是非常有帮助的。另外,用户可以使用CHM来及早发现一些系统负载高、内存异常等问题,从而避免产生更严重的问题。

CHM会自动安装在下面的软件:
    11.2.0.2 及更高版本的 Oracle Grid Infrastructure for Linux (不包括Linux Itanium) 、Solaris (Sparc 64 和 x86-64)
    11.2.0.3 及更高版本 Oracle Grid Infrastructure for AIX 、 Windows (不包括Windows Itanium)。

    在11.2.0.2之前的集群(10.2到11.2.0.1),可以安装独立版的CHM。目前支持的平台有Linux x86 和Linux x86-64,还有32位的Windows Server 2003 SP 2。独立版的CHM并不一定要安装在集群环境,单机环境也可以使用。关于如何安装独立版的CHM,请参考另一篇博客:
如何安装独立版的CHM(Oracle Cluster Health Monitor)


    在集群中,可以通过下面的命令查看CHM对应的资源(ora.crf)的状态:
    $ crsctl stat res -t -init
    --------------------------------------------------------------------------------
    NAME           TARGET  STATE        SERVER                   STATE_DETAILS       Cluster Resources
ora.crf        ONLINE  ONLINE       rac1

CHM主要包括两个服务:
    1). System Monitor Service(osysmond):这个服务在所有节点都会运行,osysmond会将每个节点的资源使用情况发送给cluster logger service,后者将会把所有节点的信息都接收并保存到CHM的资料库。
      $ ps -ef|grep osysmond
       root      7984     1  0 Jun05 ?        01:16:14 /u01/app/11.2.0/grid/bin/osysmond.bin

    2). Cluster Logger Service(ologgerd):在一个集群中的,ologgerd 会有一个主机点(master),还有一个备节点(standby)。当ologgerd在当前的节点遇到问题无法启动后,它会在备用节点启用。

     主节点:
     $ ps -ef|grep ologgerd
       root      8257     1  0 Jun05 ?        00:38:26 /u01/app/11.2.0/grid/bin/ologgerd -M -d       /u01/app/11.2.0/grid/crf/db/rac2

     备节点:
      $ ps -ef|grep ologgerd
       root      8353     1  0 Jun05 ?        00:18:47 /u01/app/11.2.0/grid/bin/ologgerd -m rac2 -r -d
/u01/app/11.2.0/grid/crf/db/rac1


CHM诊断日志:如果CHM的运行异常,可以查看下面的日志:
$GRID_HOME/log/<nodename>/crflogd/crflogd.log
$GRID_HOME/log/<nodename>/crfmond/crfmond.log

GI 中的服务ora.crf 是CHM对应的资源,可以使用下面的命令来启停CHM(不推荐停止该服务):
用root用户:
$GRID_HOME/bin/crsctl stop res ora.crf -init
$GRID_HOME/bin/crsctl start res ora.crf -init

CHM Repository:用于存放收集到数据,默认情况下,会存在于Grid Infrastructure home 下 ,需要1 GB 的磁盘空间,每个节点大约每天会占用0.5GB的空间,您可以使用OCLUMON来调整它的存放路径以及允许的空间大小(最多只能保存3天的数据)。

下面的命令用来查看它当前设置:
     $ oclumon manage -get reppath
       CHM Repository Path = /u01/app/11.2.0/grid/crf/db/rac2
       Done

     $ oclumon manage -get repsize
       CHM Repository Size = 68082 <====单位为秒
       Done

     修改路径:
     $ oclumon manage -repos reploc /shared/oracle/chm

     修改大小:
     $ oclumon manage -repos resize 68083 <==在3600(小时) 到 259200(3天)
之间
      rac1 --> retention check successful
      New retention is 68083 and will use 1073750609 bytes of disk space
      CRS-9115-Cluster Health Monitor repository size change completed on all nodes.
      Done

获得CHM生成的数据的方法有两种:
     1. 一种是使用Grid_home/bin/diagcollection.pl:
        1). 首先,确定cluster logger service的主节点:
         $ oclumon manage -get master
         Master = rac2


        2).用root身份在主节点rac2执行下面的命令:
         # <Grid_home>/bin/diagcollection.pl -collect -chmos -incidenttime inc_time -incidentduration duration
         inc_time是指从什么时间开始获得数据,格式为MM/DD/YYYY24HH:MM:SS, duration指的是获得开始时间后多长时间的数据。

         比如:# diagcollection.pl -collect -crshome /u01/app/11.2.0/grid -chmoshome  /u01/app/11.2.0/grid -chmos -incidenttime 06/15/201215:30:00 -incidentduration 00:05

       3).运行这个命令之后,CHM的数据会生成在文件chmosData_rac2_20120615_1537.tar.gz。

    2. 另外一种获得CHM生成的数据的方法为oclumon:
        $oclumon dumpnodeview [[-allnodes] | [-n node1 node2] [-last "duration"] | [-s "time_stamp" -e "time_stamp"] [-v] [-warning]] [-h]

        -s表示开始时间,-e表示结束时间
       $ oclumon dumpnodeview -allnodes -v -s "2012-06-15 07:40:00" -e "2012-06-15 07:57:00" > /tmp/chm1.txt

       $ oclumon dumpnodeview -n node1 node2 node3 -last "12:00:00" >/tmp/chm1.txt
       $ oclumon dumpnodeview -allnodes -last "00:15:00" >/tmp/chm1.txt


下面是/tmp/chm1.txt中的部分内容:
----------------------------------------
Node: rac1 Clock: '06-15-12 07.40.01' SerialNo:168880
----------------------------------------

SYSTEM:
#cpus: 1 cpu: 17.96 cpuq: 5 physmemfree: 32240 physmemtotal: 2065856 mcache: 1064024 swapfree: 3988376 swaptotal: 4192956 ior: 57 io
w: 59 ios: 10 swpin: 0 swpout: 0 pgin: 57 pgout: 59 netr: 65.767 netw: 34.871 procs: 183 rtprocs: 10 #fds: 4902 #sysfdlimit: 6815744
 #disks: 4 #nics: 3  nicErrors: 0

TOP CONSUMERS:
topcpu: 'mrtg(32385) 64.70' topprivmem: 'ologgerd(8353) 84068' topshm: 'oracle(8760) 329452' topfd: 'ohasd.bin(6627) 720' topthread:
 'crsd.bin(8235) 44'

PROCESSES:

name: 'mrtg' pid: 32385 #procfdlimit: 65536 cpuusage: 64.70 privmem: 1160 shm: 1584 #fd: 5 #threads: 1 priority: 20 nice: 0
name: 'oracle' pid: 32381 #procfdlimit: 65536 cpuusage: 0.29 privmem: 1456 shm: 12444 #fd: 32 #threads: 1 priority: 15 nice: 0
...
name: 'oracle' pid: 8756 #procfdlimit: 65536 cpuusage: 0.0 privmem: 2892 shm: 24356 #fd: 47 #threads: 1 priority: 16 nice: 0

----------------------------------------
Node: rac2 Clock: '06-15-12 07.40.02' SerialNo:168878
----------------------------------------

SYSTEM:
#cpus: 1 cpu: 40.72 cpuq: 8 physmemfree: 34072 physmemtotal: 2065856 mcache: 1005636 swapfree: 3991808 swaptotal: 4192956 ior: 54 io
w: 104 ios: 11 swpin: 0 swpout: 0 pgin: 54 pgout: 104 netr: 77.817 netw: 33.008 procs: 178 rtprocs: 10 #fds: 4948 #sysfdlimit: 68157
44 #disks: 4 #nics: 4  nicErrors: 0

TOP CONSUMERS:
topcpu: 'orarootagent.bi(8490) 1.59' topprivmem: 'ologgerd(8257) 83108' topshm: 'oracle(8873) 324868' topfd: 'ohasd.bin(6744) 720' t
opthread: 'crsd.bin(8362) 47'

PROCESSES:

name: 'oracle' pid: 9040 #procfdlimit: 65536 cpuusage: 0.19 privmem: 6040 shm: 121712 #fd: 33 #threads: 1 priority: 16 nice: 0
...


  关于CHM的更多解释,请参考Oracle官方文档:
  http://docs.oracle.com/cd/E11882_01/rac.112/e16794/troubleshoot.htm#CWADD92242
  Oracle® Clusterware Administration and Deployment Guide
  11g Release 2 (11.2)
  Part Number E16794-17

  或者 My Oracle Support文档:
  Cluster Health Monitor (CHM) FAQ (Doc ID 1328466.1)

About

本博客由Oracle全球技术支持中国区的工程师维护。为中文用户提供数据库相关的技术支持信息,包括常用的诊断工具、诊断方法、产品新特性、案例分析等。此外,MOS也陆续推出各类中文内容:技术通讯统一发布在Note 1529795.1 中,中文文档列表更新在Note 1533057.1 中,网上讲座请查看MOS文档 1456176.1,在"Archived"中可以下载历史的录音和文档。

Search

Archives
« 七月 2014
星期日星期一星期二星期三星期四星期五星期六
  
1
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
今天