Oracle集群资源管理-CRS

对于Oracle 11gR2之后的版本,集群中的所有组件统一被资源所替代(OHASD服务除外),其中最重要的两个资源分别为 CSSCRSCSS (Cluster Synchronization Service) 主要负责构建和维护集群的一致性,其资源以 ocssd.bin 守护进程的形式存在于Oracle集群中,其功能主要包含 NM (Node Management, 节点管理)GM (Group Management, 组管理),通过集群内部节点间的心跳机制和组内部共享资源的共享和隔离来保证集群在运行中资源始终处于一致性的状态。

集群中的另一个重要的资源为 CRS (Cluster Ready Service, 集群就绪服务),主要用来管理集群中的资源,以此来实现Oracle集群的高可用性。除此之外,CRS 还负责管理 OCR (Oracle Cluster Register, 集群注册表),包括OCR的更新和备份。

OCR 是一个包含集群内部所有资源的注册表,CRSD启动时会首先读取本地节点上OCR的信息,从中获取集群内部注册的所有资源及属性。集群内部的每个节点都会有一个注册表,但通常只有集群内最先启动节点的OCR注册表进程才能执行更新OCR注册表的写入操作,其他节点的OCR注册表仅可提供读服务,不提供写服务。

CRS 的启动步骤

CRS 的启动需要依赖 CSS 的启动,也就是说,集群中必须等待 CSS 服务完全开启后,集群中的 CRS 服务才能开启。从这一点上不难看出,Oracle集群在启动时会首先启动 OHASD,然后启动 CSS,最后启动 CRS。当集群中的CRS服务就绪后,整个集群可以对外提供服务了。

而整个CRS服务的启动过程相对而言是比较简单的,启动过程大致如下

  • 启动crsd.bin守护进程,守护进程启动后会读取OCR的信息,判断注册到OCR中的资源的属性、状态并尝试启动OCR中的资源

  • crsd.bin守护进程读取OCR的信息,并启动OCR中的资源

  • crsd.bin守护进程建立和集群其他节点crsd服务的通信

CRS 在集群资源启动成功后并不会中止服务,Oracle 需要定期对集群注册表进行更新(通常是每4个小时更新一次),另外还需要处理用户的请求。

资源管理

Oracle中提供了两种基于命令行的资源管理工具,分别为 crsctlsrcvtl。通过这些工具,可以很方便的对集群资源进行启动、关闭、配置等。

通过 crsctl 查看集群资源状态 通常集群启动、停止等操作会使用crsctl来完成,对单一资源的操作会使用srvctl来完成

# crsctl status resource -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATADG.dg
               ONLINE  ONLINE       node1
               ONLINE  ONLINE       node2
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1
               ONLINE  ONLINE       node2
ora.OCRVOTE.dg
               ONLINE  ONLINE       node1
               ONLINE  ONLINE       node2
ora.asm
               ONLINE  ONLINE       node1                     Started
               ONLINE  ONLINE       node2                     Started
ora.gsd
               OFFLINE OFFLINE      node1
               OFFLINE OFFLINE      node2
ora.net1.network
               ONLINE  ONLINE       node1
               ONLINE  ONLINE       node2
ora.ons
               ONLINE  ONLINE       node1
               ONLINE  ONLINE       node2
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node1
ora.node1.vip
      1        ONLINE  ONLINE       node1
ora.node2.vip
      1        ONLINE  ONLINE       node2
ora.cvu
      1        ONLINE  ONLINE       node1
ora.oc4j
      1        ONLINE  ONLINE       node1
ora.rac.db
      1        ONLINE  ONLINE       node1                     Open
      2        ONLINE  ONLINE       node2                     Open
ora.scan1.vip
      1        ONLINE  ONLINE       node1

从以上输出结果可以看到,通过 crsctl 管理的集群资源主要分为两个部分,Local Resources(本地资源)Cluster Resources(集群资源)

11gR2中的本地资源

在Oracle 11g中,本地资源包含 ora.asmora.gsdora.networkora.onsora.listener等资源。(需要注意的是,Oracle 12
.2及之后的版本中对集群本地资源和集群资源作出了调整,因此集群的资源归类稍有不同),此处仅以11gR2的集群资源属性进行说明。

  • ora.asm:asm代理资源

在11g版后,OHASD服务代替CRSD守护进程对集群中ASM资源进行统一管理,CRSD只负责展示ASM实例的状态,另外,CRSD负责管理asm资源的代理进程来设置ASM实例的初始化参数--local_listener

实际上,在11g版本的集群中,包含两个ASM资源,一个是由OHASD管理的ASM资源,一个是CRSD管理的ASM资源。OHASD管理的ASM资源负责实例节点的ASM实例管理工作,CRSD负责展示ASM实例的健康状态,同时负责将ASM实例注册到实例节点的监听服务中。

  • ora.gsd:GSD(Global Service Daemon)资源

GSD资源是为了兼容9i版本的数据库资源,这个资源默认处于离线状态(官方解释)。这也是为什么上面的ora.gsd资源显示为 OFFLINE 状态的原因。仅仅当集群中存在9i版本的数据库软件时,ora.gsd资源才应处于在线状态(ONLINE),其他情况下,都应该保持OFFLINE状态。

  • ora.network:network资源

本地资源中的ora.netowrk资源主要用来管理集群的公网,通常集群内部公网资源保存在GPNP Profile中,profile文件中的公网资源以 "<gpnp:Network id="net1" IP="10.xx.xx.xx" Adapter="eth0" Use="public"/> 的形式存在(通过 gpnptool get -o- 查看gpnp资源),profile配置文件中的公网资源在集群中则以 ora.net{n}.network 的形式存在。

CRSD主要通过网络资源中的网卡信息和相应的子网信息对网络资源进行管理,一个集群中通常会有多个资源依赖于集群公网资源存在(例如,VIP资源、SCAN VIP资源、监听程序等),当集群中的公网资源出现网络故障时,依赖于网络资源的其他资源也会被离线掉。

  • ora.ons:ONS(Oracle Notification Service)资源

ora.ons资源主要用来管理集群中的ONS(Oracle Notification Service,状态通知服务),当服务端发生某些事件时,服务端会主动通知客户端发生了哪些对应的变化,以便于客户端能够及时了解到服务端的变化,这种状态通知的服务就是依靠ora.ons服务实现的。

对于集群中的ora.ons资源,11g之后不再需要手动进行配置,通常由代理进程(oraagent_grid)完成对配置文件的更新和写入操作。ora.ons资源配置文件存放在实例节点的 <ORACLE_HOME>/opmn/conf/ons.config 文件中。另外,可以通过 onsctl 命令行管理工具查看实例节点上的ons资源状态或进行配置。

  • ora.listener:监听程序资源

在11gR2版本的集群中,主要包含两种类型的监听程序资源,分别是节点(实例)监听程序和SCAN监听程序,两种类型的监听程序资源分别对应本地资源和集群资源。

什么是监听程序?
监听程序是Oracle基于服务器端的一种网络服务,存在于数据库服务端,主要用来监听来自数据库客户端通过(SCAN) VIP或公网IP向服务端提出的连接请求,并将连接请求发送给服务端。

存在于实例节点上的ora.listener资源主要负责接收通过节点VIP或集群公网发送给数据库的连接请求。对于集群中的每个实例节点来讲,都有一个或多个活跃在实例上的VIP资源和公网资源,实例上的服务正是通过VIP或公网资源提供的。

11gR2中的集群资源

集群资源包含 ora.LISTENER_SCAN1.lsnrora.{node}.vipora.rac.dbora.cvuora.oc4j等资源。

  • ora.LISTENER_SCAN1.lsnr:SCAN监听程序

在一个集群中,SCAN监听程序往往和VIP资源成对出现,SCAN监听程序主要负责接收通过SCAN VIP发起的数据库的连接请求。也就是说,SCAN VIP 和 对应的SCAN监听程序需要运行在同一个实例节点上,当SCAN VIP切换到集群中的其他节点上时,SCAN监听程序也会发生相应的迁移切换。每个SCAN监听程序仅负责监听对应SCAN VIP的VIP地址,不回监听其他的IP地址。

如上集群资源,ora.scan1.vipora.LISTENER_SCAN1.lsnr 资源显示为 ONLINE ONLINE node1,表明两个资源目前均活跃于node1节点,且两个资源位于集群中的同一实例节点上。

  • ora.{node}.vip:VIP资源

集群中的每个实例节点上都会存在一个VIP资源,对应实例上的VIP网络。VIP网络的创建可以根据需要进行创建,但是VIP资源必须依赖于集群中的网络资源。因此,VIP资源通常会与实例上的公网IP进行绑定,当某个实例节点的公网资源发生故障后,实例节点上的VIP资源会漂移到集群中的其他实例节点上。

实例上的VIP资源主要负责接收通过VIP或公网IP发起的数据库连接请求。

  • ora.rac.db:数据库资源

集群中的数据库资源类似于ASM磁盘组资源,每个实例节点上都会存在一个对应的ASM磁盘组资源和数据库资源,数据库资源在集群中以 ora.xx.db 的形式出现,主要负责管理集群中运行的数据库并对外提供数据库服务。

数据库资源的启动会依赖于实例节点上的ASM磁盘组资源,仅仅当实例节点上的ASM磁盘组资源成功挂载后,本地节点上的数据库资源才能进行启动。

通过CRSD管理的数据库资源,可以通过 crsctl stat res ora.rac.db -p 查看数据库资源的属性列表

# crsctl stat res ora.rac.db -p
NAME=ora.rac.db
TYPE=ora.database.type
...
DATABASE_TYPE=RAC
DB_UNIQUE_NAME=rac
...
SPFILE=+DATADG/rac/spfilerac.ora

如上展示了部分数据库资源的属性,包含数据库名称、数据库类型、启动文件路径等。

  • ora.cvu:CVU(Cluster Verify Utility)资源

ora.cvu资源是Oracle 11gR2版本中用来实现集群资源健康性检查的一个服务,一个集群中只会有一个实例节点会启动该服务,通常是集群中最先启动的节点会启动ora.cvu服务,并通过运行 cluvfy 命令对集群的健康性进行检查,默认每6个小时检查一次。

通过 crsctl stat res ora.cvu -p 查看资源的属性信息

# crsctl stat res ora.cvu -p
NAME=ora.cvu
TYPE=ora.cvu.type
...
CARDINALITY=1
CHECK_INTERVAL=21600
...

如上所示,CARDINALITY 表示一个集群中可以运行cvu资源的节点数量,CHECK_INTERVAL 表示每次进行健康性检查的事件间隔,单位为s

  • ora.oc4j:oc4j(Oracle Container for JavaEE)

11.2版本的集群中出现的一个组件,主要功能为提供给Oracle数据库高可靠、高性能的服务。在12.2之后版本的集群中,该组件似乎被取消了。

最后

Oracle的集群中提供了很多资源和组件,了解每个组件的功能是有必要的,尽管很多情况下我们并不会使用到这个资源。对于一些集群中的至关重要的资源,例如,网络资源(监听资源)、ASM磁盘组资源、数据库资源等这些资源的掌握是必须的,因为通常数据库或集群发生故障,问题就出现在这些资源上。了解和掌握这些资源对于排查数据库集群的故障往往有很大帮助。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,036评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,046评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,411评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,622评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,661评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,521评论 1 304
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,288评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,200评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,644评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,837评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,953评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,673评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,281评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,889评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,011评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,119评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,901评论 2 355

推荐阅读更多精彩内容