Oracle 12c Cluster Health Monitor 详解

注:本文谢绝转载!

1  CHM 概述

Cluster HealthMonitor 会通过OS API来收集操作系统的统计信息,如内存,swap 空间使用率,进程,IO 使用率,网络等相关的数据。

CHM 的信息收集是实时的,在11.2.0.3 之前是每1秒收集一次,在11.2.0.3 之后,改成每5秒收集一次数据,并保存在CHM 仓库中。 这个收集时间间隔不能手工修改。

CHM 的目的也是为了在出现问题时,提供一个分析的依据,比如节点重启,hang,实例被驱逐,性能下降,这些问题都可以通过对CHM 收集的数据进行分析。

而通过对这些常量的监控,也可以提前知道系统的运行状态,资源是否异常。

其实在GI 11.2.0.2 中,ORACLE 就把CHM 整合到GI中了,所以在11.2.0.2 的Linux 和Solaris 的2个平台中,不需要单独的安装CHM。

AIX 平台和Windows是在11.2.0.3 版本中整合进来的,11.2.0.2 之前的版本如果需要使用CHM的功能,必须从OTN上手工下载安装,并且在11.2.0.2 之前的版本中,也是没有Windows 的版本呢。

归纳如下:

11.2.0.1 之前: Linuxonly (download from OTN)

11.2.0.2: Solaris (Sparc 64 and x86-64only), and Linux.

11.2.0.3: AIX, Solaris (Sparc 64 and x86-64only), Linux, and Windows.

注意CHM不支持任何 Itanium 平台。

另外要注意,从OTN上下载的CHM 只能在单实例安装,并且从OTN 上下载的CHM 也只有Linux 和 Windows版本,对于11.2 之后的版本,CHM 只能在GI(RC)环境下运行。

在之前的版本里,当系统出现问题时,比如节点重启,我们都会部署OSW,来收集相关的信息,关于OSW,可以参考Blog:

Oracle OS Watcher 工具 使用详解

http://blog.csdn.net/tianlesoftware/article/details/7316191

既然是2个类似的工具,那么肯定就有对比和选择:

(1)   CHM直接调用OS的API来降低开销,而OSWatcher则是直接调用OS命令,CHM 对CPU 小消耗小于5%(core),几乎没有影响。

(2)   相对于OSW,CHM 收集的频率更快,每秒一次,

(3)   与OSW比,CHM 不会收集top,traceroute,netstat 的信息。

(4)   OSW 是运行在user priority,所以在CPU 负载很高的时候,是不能工作的,也就是说CHM 可以收集到OSW 收集不到的数据。

所以如果在部署一个工具的情况下,不能定位问题,那就2个工具都用上,如果只能选择一个,那就选择CHM。

2  CHM 基本管理

2.1            CHM 的资源的管理

由Oracle GI 管理的对象都有资源名,CHM 也不例外,其对应的资源名叫:ora.crf。 可以使用如下命令查看:

[[email protected] ~]# crsctl stat res -t -init

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

Name           Target  State       Server                   Statedetails

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

Cluster Resources

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

ora.asm

1        ONLINE  ONLINE      rac1                     Started,STABLE

ora.cluster_interconnect.haip

1        ONLINE  ONLINE      rac1                     STABLE

ora.crf

1       ONLINE  ONLINE       rac1                     STABLE

ora.crsd

1        ONLINE  ONLINE      rac1                     STABLE

……

[[email protected] ~]# crsctl stat res -t -init

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

Name           Target  State       Server                   Statedetails

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

Cluster Resources

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

ora.asm

1        ONLINE  ONLINE      rac2                     Started,STABLE

ora.cluster_interconnect.haip

1        ONLINE  ONLINE      rac2                     STABLE

ora.crf

1       ONLINE  ONLINE       rac2                     STABLE

ora.crsd

1        ONLINE  ONLINE      rac2                     STABLE

ora.cssd

1        ONLINE  ONLINE      rac2                     STABLE

查看到资源名之后,就可以按照普通资源一样,对其进行管理。

[[email protected] ~]# crsctl stop res ora.crf-init

CRS-2673: Attempting to stop ‘ora.crf‘ on‘rac1‘

CRS-2677: Stop of ‘ora.crf‘ on ‘rac1‘succeeded

[[email protected] ~]# crsctl stat res -t -init

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

Name           Target  State       Server                   Statedetails

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

Cluster Resources

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

ora.asm

1        ONLINE  ONLINE      rac1                     Started,STABLE

ora.cluster_interconnect.haip

1        ONLINE  ONLINE      rac1                     STABLE

ora.crf

      1        OFFLINE OFFLINE                               STABLE

ora.crsd

1        ONLINE  ONLINE      rac1                     STABLE

[[email protected] ~]# crsctlstart res ora.crf -init

CRS-2672: Attempting to start ‘ora.crf‘ on ‘rac1‘

CRS-2676: Start of ‘ora.crf‘ on ‘rac1‘succeeded

[[email protected] ~]# crsctl stat res -t -init

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

Name           Target  State       Server                   Statedetails

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

Cluster Resources

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

ora.asm

1        ONLINE  ONLINE      rac1                     Started,STABLE

ora.cluster_interconnect.haip

1        ONLINE  ONLINE      rac1                     STABLE

ora.crf

      1        ONLINE ONLINE       rac1                     STABLE

ora.crsd

1        ONLINE  ONLINE      rac1                     STABLE

我们对CHM 资源的启动和停止,只影响是否手机CHM的数据,不会对GI和DB 产生影响。

2.2            CHM 的管理工具和命令

Oracle 的CHM也有自己专用的管理工具和命令。

2.2.1    CHMOSG工具

图形化的管理工具是CHMOSG(CHM/OSGraphical User Interface),默认没有安装,需要单独从OTN上下载。

CHMOSG 工具会已图形化的方式详细的展示相关数据。

具体的安装和使用参考官网的说明:

下载地址:

www.oracle.com/technetwork/products/clusterware/downloads/chm-os-ui-1554902.zip

参考手册:

http://www.oracle.com/technetwork/products/clusterware/downloads/chmosg-userman-1554904.pdf

2.2.2    oclumon 命令行工具

OCLUMON 命令行工具可以查询CHM仓库的相关信息。

如果是在安装GI时安装的,oclumon工具默认在$GI_HOME/bin下。 如:

[[email protected] ~]$ whichoclumon

/u01/gridsoft/12.1.0.2/bin/oclumon

如果是手工从OTN 上下载的,linux在/usr/lib/oracrf/bin 目录,Windows在C:\ProgramFiles\oracrf\bin目录。

具体命令使用参考命令帮助:

[[email protected] ~]$ oclumon -h

For help from command line   : oclumon <verb> -h

For help in interactive mode : <verb>-h

Currently supported verbs are  :

dumpnodeview, manage, version, debug,analyze, quit, exit, and help

[[email protected] ~]$ oclumon dumpnodeview -h

dumpnodeview verb usage

=======================

The dumpnodeview command reports monitoredrecords in the text format. The

collection of metrics for a node at a givenpoint in time (a timestamp) is

called a node view.

* Usage

dumpnodeview [-allnodes | -n <node1> ...] [-last <duration>|

-s <timestamp> -e<timestamp>][-i <interval>][-v]

*Where

-n<node1> ...   = Dump node views forspecified nodes

-allnodes        = Dump node viewsfor all nodes

-s<timestamp>   = Specify start timefor range dump of node views

-e <timestamp>   = Specify end time for range dump of nodeviews

Absolute timestamp must bein "YYYY-MM-DD HH24:MI:SS"

format, for example"2007-11-12 23:05:00"

-last <duration> = Dump the latest node views for a specifiedduration.

Duration must be in"HH24:MI:SS" format, for example

"00:45:00"

-v               = Dump verbosenode views

-i               = Dump node viewsseparated by the specified

interval in seconds. Mustbe a multiple of 5.

*Requirements and notes

Tostop continuous display, use Ctrl-C on Linux or UNIX and Esc on Windows.

-sand -e need to be specified together for range dumps of node views.

Thelocal System Monitor Service (osysmond) must be running to get dumps.

TheCluster Logger Service (ologgerd) must be running to get dumps.

*Defaults :

Mode      : Continuous mode

*Example :

oclumon dumpnodeview -n node1 node2 node3 -last "12:00:00"

oclumon dumpnodeview -last "00:10:00" -i 30

[[email protected] ~]$

3  分析CHM 监控数据

所谓的分析,就是从CHM 仓库中,把我们需要的数据抽取出来,这里需要使用diagcollection.pl命令。

[[email protected] ~]$ diagcollection.pl -h

Production Copyright 2004, 2010,Oracle.  All rights reserved

Cluster Ready Services (CRS) diagnosticcollection tool

diagcollection

--collect

[--crs] For collecting crs diagnostic information

[--adr] For collecting diagnostic information for ADR; specify ADRlocation

[--chmos] For collecting Cluster Health Monitor (OS) data

[--acfs] Unix only. For collecting ACFS diagnostic information

[--all] Default.For collecting all diagnostic information.

[--core] UNIX only. Package core files with CRS data

[--afterdate] UNIX only.Collects archives from the specified date. Specify in mm/dd/yyyy format

[--aftertime] Supported with -adr option. Collects archives after thespecified time. Specify in YYYYMMDDHHMISS24 format

[--beforetime] Supported with -adr option. Collects archives before thespecified date. Specify in YYYYMMDDHHMISS24 format

[--crshome] Argument that specifies the CRS Home location

[--incidenttime] Collects Cluster Health Monitor (OS) data from thespecified time.  Specify inMM/DD/YYYYHH24:MM:SS format

If not specified, ClusterHealth Monitor (OS) data generated in the past 24 hours are collected

[--incidentduration] Collects Cluster Health Monitor (OS) data for theduration after the specified time. Specify in HH:MM format.

If not specified, all ClusterHealth Monitor (OS) data after incidenttime are collected

NOTE:

1. You can also do the following

diagcollection.pl --collect--crs --crshome <CRS Home>

--clean        cleans up thediagnosability

information gathered bythis script

--coreanalyze  UNIX only. Extractsinformation from core files

and stores it in a textfile

[[email protected] ~]$

用grid用户执行命令:diagcollection.pl--collect --chmos

该命令会输出所有CHM 仓库中收集的数据。 如果数据很多,那么就需要很长时间,所以一般只查询特定时间内的数据。

[[email protected] ~]# diagcollection.pl --collect--chmos

Production Copyright 2004, 2010,Oracle.  All rights reserved

Cluster Ready Services (CRS) diagnosticcollection tool

ORACLE_BASE is /u01/gridbase

Collecting Cluster Health Monitor (OS) data

Version: 12.1.0.2.0

Collecting OS logs

Collecting sysconfig data

[[email protected] ~]# ls -lrt

-rw-r--r-- 1 root root  9815498 Dec 12 16:28chmosData_rac1_20141212_1628.tar.gz

-rw-r--r-- 1 root root   267373 Dec 12 16:28osData_rac1_20141212_1628.tar.gz

注意:

如果是收集所有的数据,在完成之后,会对收集的数据打包,所以这时,就会需要tar命令,所以要注意当前目录是否有权限,否则就需要换对应的用户,我这里是root用户,配置了环境变量,一样使用。

--收集最后一小时的数据:

[[email protected] ~]# oclumon dumpnodeview-allnodes -v -last "1:00:00"

该命令会分析所有节点最后一小时内的所有数据,但默认情况下,会把所有输出都显示在命令行,这样根本就不能分析,所以一般都是直接重定向输出到某个文件。

如:

[[email protected] ~]# oclumon dumpnodeview-allnodes -v -last "1:00:00" > /tmp/zhixin.log

[[email protected] ~]# cat /tmp/zhixin.log

--收集特定时间段:

[[email protected]]$ diagcollection.pl --collect --crshome $ORACLE_HOME --chmos--incidenttime "12/12/201414:01:01" --incidentduration "01:00"

Production Copyright 2004, 2010,Oracle.  All rights reserved

Cluster Ready Services (CRS) diagnosticcollection tool

Warning: Script executed while not loggedin as as root

Some diagnostic data may not be collected

Collecting Cluster Health Monitor (OS) data

Version: 12.1.0.2.0

Collecting OS logs

/bin/tar: var/log/messages: Cannot open:Permission denied

/bin/tar: var/log/messages-20141208: Cannotopen: Permission denied

/bin/tar: Exiting with failure status dueto previous errors

gzip: osData_rac1_20141212_1643.tar.gzalready exists; do you wish to overwrite (y or n)? y

Collecting sysconfig data

[[email protected] tmp]$

注意:

(1)这里的时间格式,必须按这种来,具体参考命令的帮助手册。

(2) 在11.2.0.2 中,因为bug 10048487的存在,不能分析所有的CHM数据,只能按时间来收集。

如果想收集更详细的数据,可以提高CHM的log 级别,语法如下:

oclumon debug log all allcomp:<tracelevel from 0 to 3>

级别越高,收集的信息越多,默认level 是1. 如果0,则不会收集log 数据。所以在调整之后,一旦测试完成,要记得修改成1.

用root用户执行:

[[email protected] ~]# oclumon debug log allallcomp:1

[[email protected] ~]# oclumon debug log allallcomp:2

[[email protected] ~]# oclumon debug log allallcomp:1

4  CHM 对磁盘空间的要求

默认情况下,CHM监控所有节点的数据需要1G的空间,每个节点每天产生约500M的数据。CHM 仓库默认保留3天,所以CHM 仓库的空间也是在不断增加。

也就是说,在启动CHM 功能的情况下,CHM仓库最低需要1G的空间。

可以通过如下命令查选CHM 仓库收集数据的保留时间:

[[email protected] tmp]$ oclumon manage -getrepsize

CHM Repository Size = 136320 seconds

[[email protected] tmp]$

这里的单位是秒,因为CHM 是每秒收集一次。

假设每天720MB 的数据,那么默认的策略就是

2*720MB*3=4320M 也就是4G多数据。

可以通过如下命令调整CHM 仓库里数据的保留时间:

oclumon manage -repos checkretentiontime xx

这里单位是秒,Oracle 建议是259200秒,也就是3天。

[[email protected] tmp]$ oclumon manage -reposcheckretentiontime 259200

The Cluster HealthMonitor repository is too small for the desired retention. Please first resizethe repository to 3896 MB

[[email protected] tmp]$ oclumon manage -getrepsize

CHM Repository Size = 136320 seconds

[[email protected] tmp]$

这里提示提示空间不够,需要先增加CHM 仓库的空间。

默认情况下,CHM 仓库就是MGMTDB实例,其默认存放在OCR 的磁盘组里,所以我们这里需要增加OCR磁盘组的空间,才能修改。

如果CHM 仓库的占用的空间较大,可以通过如下命令修改CHM 仓库大小:

oclumon manage -repos changerepossize  <memsize>.

注意:最低不小于1024MB,否则报错。

[[email protected] client]$ oclumon manage -reposchangerepossize 2500

The Cluster Health Monitor repository wassuccessfully resized.The new retention is 166380 seconds.

[[email protected] client]$

修改成功。

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

版权所有,文章禁止转载,否则追究法律责任!

AboutDave:

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

QQ:     251097186

Email:    [email protected]

Blog:    http://blog.csdn.net/tianlesoftware

Weibo:    http://weibo.com/tianlesoftware

Twitter:  http://twitter.com/tianlesoftware

Facebook: http://www.facebook.com/tianlesoftware

Linkedin: http://cn.linkedin.com/in/tianlesoftware

Dave 的QQ群:

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

注意:加群必须注明表空间和数据文件关系 | 不要重复加群

CNDBA_1: 104207940 (满)    CNDBA_2: 62697716 (满)   CNDBA_3: 283816689

CNDBA_4: 391125754   CNDBA_5: 62697850    CNDBA_6: 62697977   CNDBA_7: 142216823(满)

时间: 2024-10-21 23:04:24

Oracle 12c Cluster Health Monitor 详解的相关文章

Oracle Cluster Health Monitor(CHM)简介

Oracle Cluster Health Monitor(CHM)简介 概述 Cluster Health Monitor(以下简称CHM)是一个Oracle提供的工具,用来自动收集操作系统的资源(CPU.内存.SWAP.进程.I/O以及网络等)的使用情况.CHM会每秒收集一次数据. 这些系统资源数据对于诊断集群系统的节点重启.Hang.实例驱逐(Eviction).性能问题等是非常有帮助的.另外,用户可以使用CHM来及早发现一些系统负载高.内存异常等问题,从而避免产生更严重的问题. CHM会

Oracle Database 12c Release 2安装详解

第1章 Oracle Database 12c Release 2安装详解 1.1 下载方法 oracle官网https://www.oracle.com 1)打开官方网站,找到下载连接 2)选择更多下载. 3)选择数据库版本,这里选择的是目前的最新版本 4)接收许可协议,选在linux版本进行下载 5) 接收许可协议,点击linuxx64_12201_database.zip 6)登陆oracle账户,没有的可以自己创建一个 7)然后就能够进行下载 https://docs.oracle.co

转 Oracle Cluster Health Monitor(CHM)简介

Cluster Health Monitor(以下简称CHM)是一个Oracle提供的工具,用来自动收集操作系统的资源(CPU.内存.SWAP.进程.I/O以及网络等)的使用情况.CHM会每秒收集一次数据.这些系统资源数据对于诊断集群系统的节点重启.Hang.实例驱逐(Eviction).性能问题等是非常有帮助的.另外,用户可以使用CHM来及早发现一些系统负载高.内存异常等问题,从而避免产生更严重的问题. CHM默认安装在以下版本: 11.2.0.2 及更高版本的 Oracle Grid Inf

day01_linux中与Oracle有关的内核参数详解

linux中与Oracle有关的内核参数详解 在安装Oracle的时候需要调整linux的内核参数,但是各参数代表什么含义呢,下面做详细解析. Linux安装文档中给出的最小值: fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4294967295 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip

Oracle ErrorStack 使用和阅读详解

一.概述 在Oracle数据库运行过程中,我们经常会遇到这样或那样的错误,但是错误的提示并不具体,加大了我们在诊断问题时的难度. ErrorStack是Oracle提供的一种对于错误堆栈进行跟踪的方法,通过设置跟踪可以将一些指定错误的后台信息详细的转储出来,写入跟踪文件,帮助我们诊断问题. 备注: 1.当oracle发生关键的错误诸如:ora-600,Errorstack是自动被oracle dump写入trace文件中. 2.当你在alert.log里面看见这类错误,并提示已经产生trace文

LINUX下ORACLE相关的内核参数详解

ORACLE相关的内核参数详解 1.kernel.sem [[email protected] ~]# cat /proc/sys/kernel/sem 250         32000    100         142 [[email protected] ~]#  ipcs -sl ------ Semaphore Limits -------- max number of arrays = 142 max semaphores per array = 250 max semaphor

.Net的Oracle数据库ORM控件dotConnect for Oracle下载地址及功能详解

原文来自龙博方案网http://www.fanganwang.com/product/1330转载请注明出处 dotConnect for Oracle完全基于ADO.NET方法,因此您完全可以采用标准ADO.NET数据提供的方法来使用它.是一款为Microsoft .NET Framework提供直接Oracle数据库连接的数据发生器控件. 具体功能: 无需Oracle客户端,采用直接模式提供数据库连接 100%代码管理 具有高表现性能 支持Oracle 10g, 9i, 8i 和 8.0,包

C# Oracle数据库操作类实例详解

本文所述为C#实现的Oracle数据库操作类,可执行超多常用的Oracle数据库操作,包含了基础数据库连接.关闭连接.输出记录集.执行Sql语句,返回带分页功能的dataset .取表里字段的类型和长度等,同时还有哈稀表自动插入数据库等高级任务.需要特别指出的是:在执行SQL语句,返回 DataReader之前一定要先用.read()打开,然后才能读到数据,再用hashTable对数据库进行insert,update,del操作,注意此时只能用默认的数据库连接"connstr". 本文

ORACLE 同义词(SYNONYM)详解

以下内容整理自Oracle 官方文档 一 概念 A synonym is an alias for any table, view,materialized view, sequence, procedure, function, package, type, Java classschema object, user-defined object type, or another synonym. Because a synonymis simply an alias, it requires