oracle 11gR2组件 OHAS介绍

集群启动方式

  1. 10g版本
    10g版本的集群是通过/etc/inittable文件中的以下三行代码启动:
    h1:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1 </dev/null
    h2:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1 </dev/null
    h3:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1 </dev/null
    init.cssd负责启动ocssd.bin守护进程和其他CSS层面的守护进程,从而完成对集群的构建工作
    init.crsd负责启动crsd.bin守护进程并调用相应的racg模块来启动相应的资源,从而完成集群应用程序资源的启动
    init.evmd负责启动evmd.bin守护进程,从而实现集群节点的事件发布

以上三个脚本被同时调用,但是具有依存关系。首先需要启动cssd.bin并确保其能正产工作,之后才能启动crsd.bin并确保其正常工作,最后启动evmd.bin并确保其正常工作。这三个脚本基本结构是:首先定义变量和操作系统命令,之后根据不同的操作系统平台设置对应的环境变量,最后根据输入的参数来决定对应的操作。
这样做为集群管理软件带来问题,如果由于某种原因脚本的内容或者权限被修改,很可能导致集群无法被启动,并且很难进行诊断,而且所有的操作都保存在脚本中也会存在安全性的问题,所以从11.2版本开始,集群的启动方式发生了变化。

2、11gR2版本
11.2版本集群的/etc/inittab文件
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
h1:35:respawn:/etx/init.d/init.ohasd run > /dev/null 2>&1 </dev/null
只有脚本etx/init.d/init.ohasd 被调用。GI启动脚本变成只有一个,ohasd.bin成为集群启动的根(root)守护进程。解决了10g版本存在的问题。
一个查看ohasd.bin守护进程的ps命令:
ps -ef | grep has

资源管理方式

1、10g版本
对于10gR2版本的集群,资源管理的工作是由CRS(Cluster Ready Service)组件实现的,也就是说由crsd守护进程管理资源,包括资源的启动、停止、监控等。所谓资源实际上就是集群管理软件所需要管理的应用程序实体。
查看资源的列表
crs_stat -t
CRSD会管理以下资源:

  • VIP资源
  • ONS资源
  • GSD资源
  • ASM实例资源
  • 监听程序资源
  • 数据库资源
  • 数据库实例资源
  • 数据库服务资源

CRSD如何管理资源:
一些资源相关的术语如下:

  • 动作(action):定义CRSD对资源进行启动、停止、检查和清除操作时所需要运行的步骤,可以是一段shell脚本、一段应用程序、数据库命令等。
  • 资源概要文件(profile):概要文件定义了资源的很多属性,以便CRSD能够根据概要文件定义的属性来创建资源。例如:检查隔离、动作脚本等。
  • 依赖关系(Dependency):资源之间并不是独立的,有些资源之间是存在相互依赖关系的。例如:数据库实例启动的前提是ASM实例先要被启动,这表示数据库实例资源需要依赖ASM实例资源,这种依赖关系通过资源属性REQUIRED_RESOURCES实现。
  • 权限:由于不同的资源需要执行的操作不同,意味着执行操作的用户也会不同,每个资源都会针对不同的用户指定不同的权限。
  • OCR(Oracke Cluster Register):OCR是包含以上所有信息的一个注册表,CRSD通过访问OCR来获得集群资源列表以及每个资源的各个属性。

Oracle集群管理软件(CRS)还定义了一些racg模块,不同的racg模块负责不同的资源。
CRSD管理资源的方法:
①CRSD通过OCR定义资源。当crsd.bin守护进程启动时,通过读取OCR中的信息来获得资源定义。当资源属性发生变化时,crsd.bin守护进程也会修改OCR中的信息。
②CRSD通过调用racg模块来实现对资源的各种动作。

2、11gR2版本
ohasd是集群启动的唯一始点,所有的其他守护进程和集群管理的资源统统被定义为资源,ohasd守护进程负责管理集群所有的守护进程对应的资源。同时集群管理软件(GI)不再使用racg模块来管理资源,而是使用代理进程(agent)统一实现对所有资源的管理,使用集群注册表OLR(Oracle Local Registry)来保存资源的属性。

(1) OLR是保存在本地的集群注册表,也就是说OLR是保存在每个节点本地的,而且其中的信息大部分是针对每个节点的。OLR的主要作用是为ohasd守护进程提供集群的配置信息和初始化资源的定义信息。
(2)代理进程
代理进程框架的核心部分——代理进程会以守护进程的形式存在,完成管理资源的任务,代理进程是多线程的进程,而且针对不同的资源会启动不同的代理进程。支持的代理进程包括以下几种:

  • oraagent:以oracle或者grid用户启动,负责管理 用户为oracle或grid的资源
  • orarootagent:以root用户启动,负责管理的用户为root的资源
  • cssdagent:负责启动ocssd.bin进程守护进程,之后负责监控ocssd.bin守护进程
  • cssdmoniot:只负责监控ocssd.bin守护进程

代理进程可以由ohasd和crsd守护进程启动,其他的集群守护进程不能启动代理进程。其中ohasd守护进程启动的代理进程负责管理集群的初始化资源和其他守护进程,而crsd守护进程启动的代理进程负责管理集群的其他资源。
ohsad守护进程会启动4个代理进程,分别是orragent_grid(如果集群管理软件和数据库软件都是使用oracle用户安装的,那么这个代理进程的名称就是oraagent_oracle)、orarootagent_root、cssdagent_root、cssdmonitor。
每个代理进程负责管理的资源参照下表:

代理进程资源拥有者资源名称
oraagent_gridgridora.gipcd
oraagent_gridgridora.gpnpd
oraagent_gridgridora.mdnsd
cssdagentrootora.cssd
cssdmonitorrootora.cssdmonitor
orarootagent_rootrootora.diskmon
orarootagent_rootrootora.ctssd
orarootagent_rootrootora.crsd
oraagent_gridgridora.evmd
oraagent_gridgridora.asm
orarootagent_rootrootora.driver.acfs
orarootagent_rootrootora.cluster_interconnect.haip
orarootagent_rootrootora.crf

集群在ohasd层面的启动过程是:首先,/etc/inittab中的init.ohasd脚本被调用,该脚本启动ohasd.bin守护进程;然后ohasd.bin启动对应的代理进程,每个代理进程负责启动自己管理的集群初始化资源,即对应资源的初始化进程被启动。

ohasd管理的资源

1. HAIP

对于Oracle集群,私网通信非常重要,因为节点和节点之间的通信绝大部分都是要通过私网来实现。私网通信基本上可以分为两种:第一种是集群层面之间的通信;第二种是数据库实例之间的通信。
第一种通信(例如节点间的网络心跳)
主要是特点是持续存在、实时性要求高,但是数据量比较小,所以通过TCP\IP协议传递就可以了。
第二种通信
从11.2.0.2版本开始,Oracle提供了私网的高可用性和负载均衡特性-HAIP

HAIP顾名思义就是一个(或多个)IP地址。oracle会自动在集群的每一块私网网卡上绑定一个169.254.*.*网段的ip地址,这个ip地址被称为HAIP,数据库实例(ASM实例也同样适用)之间在进程通信时,会通过这个Oracle绑定的IP地址来完成。当某一块私网网卡出现问题时,对应网卡上绑定的IP地址也可以漂移到其他的私网网卡上,这就实现了私网的高可用性。如果集群包含了多块私网,就意味着会有多个HAIP被绑定在每一块私网网卡上,每一块网卡都同时承担实例之间的通信,从而实现了私网通信的负载均衡。
HAIP的负载均衡是以网卡为单位的,不需要额外的OS软件和交换机支持。

oracle集群最多支持4块私网网卡。网卡数量和HAIP数量的关系如下:
1块私网网卡,1个HAIP地址
2块私网网卡,2个HAIP地址
3块私网网卡,4个HAIP地址
4块私网网卡,4个HAIP地址

检查HAIP资源状态和私网设置:
crsctl stat res -t -init
查看集群有几个网卡
oifcfg getif
检查HAIP是否已经绑定到对应的网卡上:
ifconfig -a

ps.数据库和ASM实例是在启动时读取 HAIP地址的。

2、CHM
CHM(Cluster Health Monitor)是oracle提供的一款工具,用来自动收集操作系统资源(CPU、内存、SWAP、进程、I/O以及网络等)的统计信息。CHM会以初始化资源ora.crf的形式存在于集群的每一个节点上。CHM搜集的系统资源数据对于诊断集群系统的节点重启、hang、实例驱逐(Eviction)、性能问题等是非常有帮助的。另外,用户可以使用CHM及早发现一些系统负载异常、内存异常等问题,从而避免产生更严重的问题。

CHM主要由以下组件构成:

  • CHM档案库(Repository):它是一个Berkeley数据库,作为保存从各个节点搜集到的操作系统统计信息的档案库。默认情况下他会存在于<gi_home>/crf/db/<节点名>下,默认占用1GB磁盘空间,对于绝大多数的系统,每个节点每天搜集的统计信息大约会占用500MB的磁盘空间。CHM最大允许的信息保留天数为3天,这样做的目的就是为了减少CHM档案库所占用的 磁盘空间。
  • 系统监控服务(System Monitor Service):它会以osysmond.bin守护进程的方式在所有节点运行,osysmond.bin负责定期搜集本地节点的操作系统统计信息,并将搜集到的统计信息发送给主节点上的集群日志服务。
  • 集群日志服务(Cluster Logger Service):这个服务会以守护进程ologgerd的形式运行在集群的CHM主节点(Master Node)和副节点(Replication Node)上。主节点的ologgerd负责接收从所有节点的osysmond.bin发送过来的操作系统统计信息,并记录到主节点的CHM档案库中;副节点的ologgerd负责接收从主节点的集群日志服务发过来的操作系统统计信息,并记录到副节点的CHM档案库中,从而实现CHM档案库的高可用性。

CHM工作步骤如下:
(1) 、各个节点的osysmond通过集群私网向主节点的ologgerd发送本地节点操作系统统计信息。
(2)、主节点的ologgerd向本节点的CHM档案库中写入收到的统计信息,同时发送给副节点ologgerd
(3)、副节点的ologgerd向本节点的CHM档案库中写入收到的统计信息。
如果CHM的主节点出现了问题,副节点会接管CHM并成为新的主节点,之后的新主节点会从集群的其他正常节点中再选出新的副节点。(osysmond和ologgerd守护进程都会以实时RT优先级运行,以确保CHM能够准时地搜索操作系统的性能信息。)
oracle 提供了oclumon和CHM/OS Graphical User Interface(CHMOSG)两款工具来访问CHM的数据。其中CHMOSG是图形界面工作,可以从OTN下载。
下面介绍一些简单的oclumon命令,
(1)查看主节点和副节点
oclumon manage -get MASTER REPLICA
(2)看当前的统计信息和保存时间段
oclumon manage -get repsize
(3)搜集一段时间内的各个节点的统计信息
oclumon dumpnodeview -allnodes -v -s "2020-09-03 00:00:00" -e "2020-11-09 00:00:00" > /tmp/chm.log
(4)帮助命令
oclumon -h

网卡的统计信息包含网卡的发送和接受性能信息、错误数量等,而且集群的公网和私网信息也被包含在内。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值