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

Oracle 11g RAC各组件介绍

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

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 接收用户命令,为用户提供管理接口。

相关推荐

iis部署php项目(iis发布php)

1.启动iis服务器最后点击确定就完成了2.打开iis点击进入即可3.创建网站进入添加网站。添加注意事项如图所示!启动、浏览、重启、停止网站这个如图所示。需要说明的是只要修改了配置就必须重启下网站4...

Win10安装Apache和PHP(apache安装php模块)

说明:虽然PHPStudy之类的软件给我们提供了方便的集成环境,但是其使用的是非线程安全的PHP版本(NotThreadSafe,NTS),某些功能不可以使用。所以,我们还需要自己再安装一个Apa...

两个php框架在一个网站上开发好吗

框架就是通过提供一个开发Web程序的基本架构,PHP开发框架把PHPWeb程序开发摆到了流水线上。换句话说,PHP开发框架有助于促进快速软件开发(RAD),这节约了你的时间,有助于创建更为稳定的程序,...

Ubuntu linux 上的 Nginx 和 Php 安装

教程-在UbuntuLinux上安装Nginx1.安装Nginx服务器和所需的包。apt-getupdatebrapt-getinstallnginx2.在Nginx配置文件...

网站开发初级(3) 之 PHP运行环境搭建

这篇文章主要是讲windows下php环境的搭建这里我们用的是phpstudy,作为入门学者足够了,解压安装就能用了,适当配置下基本能应付我们的开发要求下载地址:http://rj.baidu.co...

真实案例:优化用老PHP7.4的网站让其速度提高4倍

我让反应迟钝的PHP应用程序性能提升了4倍,而且我甚至没有改动任何源代码。没有重构,没有重写,只是进行了一系列精心规划的配置调整和部署优化。这篇文章将详细告诉你我是如何做到的。如果你的PHP应用程序运...

mac下快速搭建本地php开发环境(macbook开发php)

本教程主要是告诉大家,怎么快速的在mac下搭建php+mysql服务。一、安装CommandLineTools苹果系统下很多开发工具是基于CommandLineTools,所以安装它是首先。...

php手把手教你做网站(二十)vue+tp6简单案例(demo)

很多时候搭建好了环境,但是不知道怎么入手去开发。下面我们通过简单案例说明如何快速入门开发模块:例1:开发helloworld模块搭建好环境,新建项目以后,进入项目所在文件夹,依次进入src/compo...

Windows安装phpstudy(windows安装docker desktop)

说明:phpstudy是一个PHP+MySQL+Apache的集成环境,可以减少单独部署各个所需软件的麻烦,以及更加方便地切换版本。phpenv、wamp等软件的作用一样。由于环境的不同,安装过程中可...

服务器安装PHP网站的运行环境(php的服务器app)

首先要确认的是你的服务器的系统,Windows、或者linux系统。要想在Windows系统里运行php网站,可以选择iis或者Apache,如果你单独的去安装,可能会花很多时间去配置这个软件直接问题...

折腾群晖NAS:使用群晖web功能搭建个人博客「 小白玩NAS系列」

大家好,今天分享给大家如何利用群晖自带的web功能,来搭建一个属于自己的个人网站或者博客。搭建群晖web环境1、首先进入套件中心,下载webstation,群晖自带的web环境,安装会提示安装PHP...

黑客搭建钓鱼平台,手把手教你如何钓鱼?

跨站脚本攻击XSS:通过HTML注入篡改了网页,插入了恶意的脚本,从而用户浏览网页时,控制用户浏览器的一种攻击那么,我们搭建一个XSS钓鱼平台吧,注意:这个平台仅用于学习和测试,小伙伴们不要动有坏心思...

PHP 环境 搭建教程(php环境搭建apache)

PHP是一种编程语言,很多网站都用PHP语言编写,我们有时候需要测试一个网站,就需要PHP环境才能运行,又要安装Apache、又要安装MySQL……真的非常麻烦。其实我们可以使用PHP集成...

php手把手教你做网站(六)IIS创建站点注意事项

站点名称:随便填写;应用程序池:创建站点的时候会自动生成对应的,默认就好;物理路径:选择站点所在目录;类型:本地一定是http,网上可能会有https;IP地址:默认端口默认,如果是别的端口,网址访问...

分享PHP网站开发过程中的一些经验

现在的网站建设语言有几种,分别是ASP.NET,PHP,JSP这三种最为常见,这三种语言做出来的网站各有各的特点,asp属于最成熟的建站模式,jsp一般使用在大型网站系统上,对于php是目前比较流行的...