百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Oracle 11g RAC各组件介绍

moboyou 2025-03-10 13:51 49 浏览

1 术语解释

1.1 高可用(HA)

什么是高可用?顾名思义我们能轻松地理解是高度可用的意思,也就是说高可用(high availability) 指的是运行时间能满足预计或期望的一个系统或组件,我们常听说的 24*7*365 系统,这种系统追求一种 不间断提供服务的目标,任何时候都不能停止服务,否则会给用户造成比较大的影响。在信息、通讯、 互联网技术发展如此快的今天,越来越多的系统都希望成为一个高可用的系统,比如银行、证券系统等。

1.2 负载均衡(LB)

负载均衡(load balance)是指将业务的负载尽可能平均、合理地分摊到集群的各个节点,每个节 点都可以处理一部分负载,并且可以根据节点负载进行动态平衡,提高各个节点硬件资源的利用率以及 降低单节点因为负载过高而导致的故障。

1.3 RAC 集群

RAC 集群,全称 Real Application Clusters,译为“实时应用集群”,是 Oracle 提供的一种高可用、 并行集群系统,RAC 除了具有高可用能力还有负载均衡能力,整个 RAC 集群系统由 Oracle Clusterware(集 群软件)和 Real Application Clusters(RAC)两大部分组成。 我们平时一直经常提的 RAC,它仅仅是 RAC 集群中的一部分,是运行在集群软件 Oracle Clusterware 上的一个应用,就是数据库,它和集群软 件的关系类似单机环境中应用程序和操作系统的关系。

1.4 CRS

我们知道 RAC 集群需要集群软件,那么 CRS 是什么呢?在 Oracle 10g 版本前,RAC 集群所需的集群 软件依赖于硬件厂商,在不同平台上实施 RAC 集群都需要安装和配置厂商的集群软件,而 Oracle 只提供 了 Linux 和 Windows 平台上的集群软件,叫 Oracle Cluster Manager。但从 10.1 版本开始,Oracle 推 出了一个与平台独立的集群产品:Cluster Ready Service,简称 CRS,从此 RAC 集群的实施不再依赖各 个硬件厂商,从 10.2 版本开始,Oracle 将这个集群产品改名为 Oracle Clusterware,在 11g 中又被称 为 GI(Oracle Grid Infrastructure),但我们叫惯了 CRS,所以平时很多时候也就称之为 CRS,这个产 品并不局限用于数据库的集群,其他应用都可以借用其 API 轻易实现集群功能。


2 RAC 架构

2.1 RAC 环境组成

2.1.1 硬件环境

整个 RAC 集群的硬件环境包括主机、共享存储、互联网络设备。

  • 主机(节点)

一个 RAC 集群环境中至少有两台主机,也就是两个节点,每个节点的硬件配置应该都一样,每个 节点至少配置两块物理网卡。

  • 互联网络设备
  1. 两块网卡:也就是上面所说的每个节点上必须至少配置两块物理网卡。一块网卡用于集群内 部的私有通信,集群节点间数据块的传输都是通过这块网卡,我们称之为私有网卡,上面配 的 IP 称为 Private IP;另一块网卡用于对外服务,比如数据库的查询等,我们称之为公有 网卡,上面配的 IP 称为 Public IP。除此之外,每个节点还有第三个 IP,我们称之为 VIP(Virtual IP),在所有节点都正常运行时,每个节点的 VIP 会被分配到公有网卡上,当某个 节点出现故障宕机时,这个节点的 VIP 会被移到还在正常运行节点的公有网卡上。
  2. 网络交换机:整个 RAC 集群中需要几个网络交换机呢?个人认为至少两个。一个用于连接所 有节点的公有网卡以提供对外的数据库服务,一个用于连接各个节点之间的私有网卡(当然 Oracle 官方也认为如果是两个节点,其实也可以通过网线直连的方式,但是生产环境中几乎 不存在这种方式)以传递集群节点之间的心跳数据和数据库数据块(Cache Fusion)。
  • 共享存储

在 RAC 集群中,最重要的是共享存储,RAC 是一个“多实例、单一数据库”的架构,所有的节点 共享一个数据库。数据文件、联机日志、参数文件、控制文件都必须放在共享存储上以保证每个节点 的实例都能访问。每个节点必须安装 HBA 卡,然后通过光纤线和存储设备连接。


2.1.2 软件组成

概括来说,RAC 集群的软件组成包含:操作系统、集群软件、集群文件系统、数据库软件。

1. 操作系统

每个节点上所安装的操作系统必须是相同版本的,操作系统在 RAC 架构中所处位置是硬件与集群 件中间。

2. 集群件(CRS)

集群件是安装在操作系统之上的一个特殊软件,负责管理整个集群环境中的硬件资源,并为上 层的 RAC 集群提供基础服务。它与上层应用(例如数据库)的关系类似于单机环境中操作系统和应用程序的关系。单机环境下,OS 能代理应用程序对硬件访问,但是在集群中有多台计算机,把整个集 群想象成一台虚拟的计算机,那集群件就是这台虚拟计算机上的操作系统,RAC 是运行在它上面的一 个应用程序。

3. 集群文件系统

RAC 集群中有很多的文件必须放在共享存储上,保证所有节点都能访问。这就需要对节点的访问 进行控制,普通的文件系统并不支持集群功能,必须采取特殊的存储策略。在 10g 以前,Oracle 只 提供了对裸设备的支持,并没有提供集群文件系统,但从 Oracle 10g 开始,Oracle 提供了 OCFS 和 ASM 两种集群文件系统,后者在现在的环境中用的最多,也最为流行。

4. 数据库软件

这个就是 rdbms 软件了,只有安装了数据库软件,我们才能创建数据库,存储数据,对外提供数 据服务。这里附上一张 RAC 集群简单的拓扑图:



2.2 CRS 组成

Oracle Clusterware,在 11g 中又被称为 GI(Oracle Grid Infrastructure),我们这里统一直接称之为 CRS 好了,它由磁盘文件、后台进程、网络组件组成。

1. 磁盘文件

1) OCR:OCR(Oracle Cluster Registry)是为了避免每个节点的配置信息不同步而保存了整个集群的 配置信息,且整个集群只有一份配置,所有节点共享,配置信息以“Key-value”的形式保存其中。 当集群配置需要发生改变时,每个节点都有一个 OCR Process 来读取 OCR Cache 中的内容,而只有 一个节点(OCR Master)有权限读写 OCR Disk 的内容,然后同步到本地和其他节点的 OCR Cache。

2) Voting Disk:Voting Disk 这个文件主要用于记录各个节点的状态,以防在某个或某几个节点出现 问题时,决定哪部分节点具有集群的控制权,而把其他节点从集群中剔除,从而能够继续正常地对 外提供服务。

2. CRS 后台进程

其中最重要的三个进程是 CRSD、CSSD、EVMD,分别对应了 CRS、CSS、EVM 三个服务,而每个服务又 是由一系列的模块组成的,我们可以通过 crsctl 命令来查看有哪些模块组成,如查看 css 服务,crsctl lsmodules css。那么这三个进程又是什么时候启来的呢?在安装 Clusterware 的最后阶段,会要求在每 个节点中执行 root.sh 脚本,这个脚本会在/etc/inittab 文件中最后三行添加三个后台进程的启动信息, 类似:

如果 CRSD 和 EVMD 出现异常,系统会自动重启这两个进程。但是如果 CSSD 进程异常,系统会立即重 启。罗列 Linux 和 Unix 中各个服务所对应的进程如下:


以 Oracle 11g 在 linux 上为例来查看一下各个进程:

[oracle@node1 ~]$ ps -ef|grep css

root 4408 1 0 04:23 ? 00:00:05 /oracle/app/grid/product/11.2.0/bin/cssdmonitor

root 4427 1 0 04:23 ? 00:00:05 /oracle/app/grid/product/11.2.0/bin/cssdagent

grid 4445 1 0 04:23 ? 00:00:56 /oracle/app/grid/product/11.2.0/bin/ocssd.bin


[grid@node1 bin]$ ps -ef|grep crs

root 4767 1 0 04:24 ? 00:00:20 /oracle/app/grid/product/11.2.0/bin/crsd.bin reboot


[grid@node1 bin]$ ps -ef|grep evm

grid 4623 1 0 04:24 ? 00:00:07 /oracle/app/grid/product/11.2.0/bin/evmd.bin

grid 4861 4623 0 04:24 ? 00:00:00 /oracle/app/grid/product/11.2.0/bin/evmlogger.bin -o

/oracle/app/grid/product/11.2.0/evm/log/evmlogger.info -l

/oracle/app/grid/product/11.2.0/evm/log/evmlogger.log


我们来看一下各个进程的作用:

OCSSD

进程是 Clusterware 最关键的进程,如果出现异常会导致系统重启,这个进程提供 CSS(Cluster Synchronization Service)服务,它通过多种心跳机制实时监控集群的健康状态,提供集群的基础服务 功能。

CRSD

是实现高可用的主要进程,它提供了 CRS(Cluster Ready Service)服务。这些服务包括 Clusterware 上集群资源的关闭、重启、转移、监控等。集群资源分为两类:一类是 Nodeapps 型的,就是说每个节点 只需要一个就行,这类有 GSD(Global Service Daemon)、ONS(Oracle Notification Service Daemon)、 VIP、Listener;另一类是 Database-Related,就是和数据库相关,不受节点限制,这类有 Database、 Instance、Service 等。

EVMD

该进程负责发布 CRS 产生的各种事件,同时也是 CRSD 和 CSSD 两个进程之间的桥梁。

RACGIMON

该进程负责检查数据库健康状态,负责 Service 的启动、停止、故障转移等。 OPROCD

在非 Linux 平台,且没有使用第三方集群软件时才有该进程,用来检测节点的 CPU 挂起,起过 1.5秒会重启节点。

OHASd

Oracle 在 11gR2 引入了 OHASd(Oracle High Availability Services Daemon,Oracle 高可用服务 后台进程),再由它来启动其他的集群件守护进程。


3. 网络组件

我们从 RAC 集群架构中的硬件环境组成已经知道,集群环境中的节点上必须配置两块物理网卡,在 公网网卡上面我们除了设置公有 IP 外还设置了 VIP,Oracle 的 TAF(所谓 TAF 就是连接建立后,如果某 个实例发生故障,连接到这个实例上的用户会被自动迁移到其他健康实例上,对于应用程序而言,这个 迁移过程透明,不需要人工介入)是建立在 VIP 技术上的,它与 IP 最主要的不同就是 VIP 是浮动的,IP 是固定的,当某个节点宕机时,该节点上的 VIP 自动会移到健康节点的公网网卡上,所能对该节点的连 接自动会移到健康节点。

VIP 还有几个特点需要我们注意一下:

a) VIP 是在 Clusterware 安装最后阶段通过脚本 vipca 创建的;

b) VIP 作为一个 Nodeapps 类型的 CRS 资源注册到 OCR,并由 CRS 维护状态; c) 每个节点的监听会同时在 Public 网卡的 Public Ip 和 VIP 两个地址上监听;

d) 客户端的 tnsnames.ora 一般配置指向节点的 VIP


2.3 单实例与 RAC 环境

1、 单实例与 RAC 环境对比

组件

单实例

RAC

SGA

实例有自己的 SGA

每个实例有自己的 SGA

后台进程

实例有自己的后台进程集

每个实例有自己的后台进程集

数据文件

仅由一个实例访问

由所有实例共享,必须放于共享存储上

控制文件

仅由一个实例访问

由所有实例共享,必须放于共享存储上

联机重做日志文

专供一个实例写入与读取

只有一个实例可以写入,但其他实例可以在回复和归档期间读取,如果一个实例关闭,那么 其他实例的日志切换可以对空闲实例日志进 行归档




归档重做日志文

专供一个实例使用

专属于一个实例,但在介质恢复期间,其他实例需要访问所需的归档日志

闪回日志

专供一个实例使用

由所有实例共享,必须放于共享存储上

告警日志与其他

跟踪文件

专供一个实例使用

专属于每个实例,其他实例不会读写这些文件

ORACLE_HOME

同一个节点上访问不同数据库的多个实例可以使用 相同的可执行文件

通常与单个实例相同,但也可以放置于共享文件系统中,允许所 有实例共用一 个 ORACLE_HOME


2、 RAC 新增的组件和后台进程

RAC 的环境中虽然每个实例都有自己的 buffer cache 与 shared pool,但它们现在已经变成全局的, 需要特殊处理才能做到没有冲突、无损坏地管理资源,所以也新增了一些单实例环境中没有的组件,最 主要的有以下两部分:

1) GRD

RAC 实例的 SGA 中多了一个 GRD(Global Resource Directory)部分,Oracle 数据库中数据的操作 都是在内存 SGA 中完成的,与传统的单实例数据库不同,RAC 有多个实例,每个数据块在任何一个实 例中都有拷贝,RAC 必须知道这些拷贝的分布、版本、状态,而 GRD 就是保存这种信息的内存区。值 得注意的是,每个节点都只有部分 GRD 内容,所有节点合在一起才能构成完整的 GRD。

2) 后台进程

RAC 也有和单实例中的 DBWR、LGWR、ARCn、CKPT 这些后台进程,此外还有一些 RAC 特有的后台进程:

lms

该进程是 Cache Fusion 的主要进程,负责数据块在实例间的传递,对应的服务是 GCS(Global Cache Service),可以通过 GCS_SERVER_PROCESSES 参数来控制进程的数量,默认是 2 个,取值范围为 0~9。

lmd

该进程提供 GES(Global Enqueue Service)服务,在多个实例间协调对数据块的访问序,保证数据 的一致性访问,和 LMSn 进程以及 GRD 共同构成 RAC 的核心功能 Cache Fusion。

lck

这个进程负责 Non-Cache Fusion 资源的同步访问,每个实例都有一个 LCK 进程。 lmon

各个实例的 LMON 进程都会定期通信,检查集群中各节点的健康状态,当某个节点出现故障,该进程 负责集群重构、GRD 恢复等,它提供的服务是 CGS(Cluster Group Services)。

diag

Diag 进程监控实例的健康状态,并在实例出现运行错误时收集诊断数据记录到 Alert.log 日志中。

GSD

这个进程负责从客户端工具,比如 srvctl 接收用户命令,为用户提供管理接口。

相关推荐

Excel技巧:SHEETSNA函数一键提取所有工作表名称批量生产目录

首先介绍一下此函数:SHEETSNAME函数用于获取工作表的名称,有三个可选参数。语法:=SHEETSNAME([参照区域],[结果方向],[工作表范围])(参照区域,可选。给出参照,只返回参照单元格...

Excel HOUR函数:“小时”提取器_excel+hour函数提取器怎么用

一、函数概述HOUR函数是Excel中用于提取时间值小时部分的日期时间函数,返回0(12:00AM)到23(11:00PM)之间的整数。该函数在时间数据分析、考勤统计、日程安排等场景中应用广泛。语...

Filter+Search信息管理不再难|多条件|模糊查找|Excel函数应用

原创版权所有介绍一个信息管理系统,要求可以实现:多条件、模糊查找,手动输入的内容能去空格。先看效果,如下图动画演示这样的一个效果要怎样实现呢?本文所用函数有Filter和Search。先用filter...

FILTER函数介绍及经典用法12:FILTER+切片器的应用

EXCEL函数技巧:FILTER经典用法12。FILTER+切片器制作筛选按钮。FILTER的函数的经典用法12是用FILTER的函数和切片器制作一个筛选按钮。像左边的原始数据,右边想要制作一...

office办公应用网站推荐_office办公软件大全

以下是针对Office办公应用(Word/Excel/PPT等)的免费学习网站推荐,涵盖官方教程、综合平台及垂直领域资源,适合不同学习需求:一、官方权威资源1.微软Office官方培训...

WPS/Excel职场办公最常用的60个函数大全(含卡片),效率翻倍!

办公最常用的60个函数大全:从入门到精通,效率翻倍!在职场中,WPS/Excel几乎是每个人都离不开的工具,而函数则是其灵魂。掌握常用的函数,不仅能大幅提升工作效率,还能让你在数据处理、报表分析、自动...

收藏|查找神器Xlookup全集|一篇就够|Excel函数|图解教程

原创版权所有全程图解,方便阅读,内容比较多,请先收藏!Xlookup是Vlookup的升级函数,解决了Vlookup的所有缺点,可以完全取代Vlookup,学完本文后你将可以应对所有的查找难题,内容...

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数在电商运营、物流对账等工作中,经常需要统计快递“揽收到签收”的耗时——比如判断某快递公司是否符合“3天内送达”的服务承...

Excel函数公式教程(490个实例详解)

Excel函数公式教程(490个实例详解)管理层的财务人员为什么那么厉害?就是因为他们精通excel技能!财务人员在日常工作中,经常会用到Excel财务函数公式,比如财务报表分析、工资核算、库存管理等...

Excel(WPS表格)Tocol函数应用技巧案例解读,建议收藏备用!

工作中,经常需要从多个单元格区域中提取唯一值,如体育赛事报名信息中提取唯一的参赛者信息等,此时如果复制粘贴然后去重,效率就会很低。如果能合理利用Tocol函数,将会极大地提高工作效率。一、功能及语法结...

Excel中的SCAN函数公式,把计算过程理清,你就会了

Excel新版本里面,除了出现非常好用的xlookup,Filter公式之外,还更新一批自定义函数,可以像写代码一样写公式其中SCAN函数公式,也非常强大,它是一个循环函数,今天来了解这个函数公式的计...

Excel(WPS表格)中多列去重就用Tocol+Unique组合函数,简单高效

在数据的分析和处理中,“去重”一直是绕不开的话题,如果单列去重,可以使用Unique函数完成,如果多列去重,如下图:从数据信息中可以看到,每位参赛者参加了多项运动,如果想知道去重后的参赛者有多少人,该...

Excel(WPS表格)函数Groupby,聚合统计,快速提高效率!

在前期的内容中,我们讲了很多的统计函数,如Sum系列、Average系列、Count系列、Rank系列等等……但如果用一个函数实现类似数据透视表的功能,就必须用Groupby函数,按指定字段进行聚合汇...

Excel新版本,IFS函数公式,太强大了!

我们举一个工作实例,现在需要计算业务员的奖励数据,右边是公司的奖励标准:在新版本的函数公式出来之前,我们需要使用IF函数公式来解决1、IF函数公式IF函数公式由三个参数组成,IF(判断条件,对的时候返...

Excel不用函数公式数据透视表,1秒完成多列项目汇总统计

如何将这里的多组数据进行汇总统计?每组数据当中一列是不同菜品,另一列就是该菜品的销售数量。如何进行汇总统计得到所有的菜品销售数量的求和、技术、平均、最大、最小值等数据?不用函数公式和数据透视表,一秒就...