目录

一、RAC集群的启停操作

1.1.前提须知

1.2.Oracle集群服务中的关键进程组件

二、启动Oracle集群

2.1.确保共享存储已启动(如果存在存储系统管理员)

2.2.验证集群服务状态(grid)

2.3.验证ASM实例状态

2.4.启动数据库实例

2.5.验证监听器和服务

2.6.连接到数据库

三、停止Oracle集群

3.1.停止数据库实例

3.2.停止节点级服务(VIP、监听器)

3.3.停止ASM实例

3.4.停止集群服务(切换到root用户)

3.5.停止HAS(root)

3.6.关闭操作系统


一、RAC集群的启停操作

1.1.前提须知

Oracle RAC集群的启停有严格的顺序要求,需要严格遵循先底层、后上层的顺序,以确保依赖关系正常。

开机顺序(从下往上):操作系统 → 集群服务 → 数据库实例

关机顺序(从上往下):数据库实例 → 集群服务 → 操作系统

这个顺序的核心逻辑是:集群服务(Clusterware)是RAC的“基础设施”,它管理着VIP、监听器、ASM、数据库等所有资源。如果关机时先关集群服务再关数据库,可能导致数据丢失或OCR不一致。反过来,开机时必须先让集群服务完全就绪,数据库才能正常启动。

1.2.Oracle集群服务中的关键进程组件

组件层级 进程/服务名称 作用
集群基础层 ohasd(Oracle High Availability Services Daemon) RAC集群的“根进程”,负责启动其他所有集群组件
集群同步层 cssd(Cluster Synchronization Services) 集群节点间心跳、磁盘心跳,节点成员管理
ctssd(Cluster Time Synchronization Services) 集群节点间时间同步
evmd(Event Manager) 集群事件管理
资源管理层 crsd(Cluster Ready Services) 核心资源管理,负责启动、停止数据库,ASM、监听器等。
gpnpd 集群配置管理(11g后引入)
网络与服务层 VIP(Virtual IP) 应用连接的虚拟IP,故障时漂移到其他节点
SCAN VIP(Single Client Access Name) 11g后引入,为客户端提供统一的访问入口
Listener 监听器,接收客户端连接请求
存储层 ASM实例 管理共享磁盘组(OCR、Voting Disk、数据文件)
数据库层 数据库实例(PMON、SMON、DBWR、LGWR、CKPT、RECO等) 实际数据服务

注意:ASM实例在11g及以后版本中承载着OCR和Voting Disk,这是RAC的核心元数据存储,必须优先保证其可用。

二、启动Oracle集群

2.1.确保共享存储已启动(如果存在存储系统管理员)

确保共享存储(如ASM磁盘组、NFS、SAN)比RAC节点先启动。如果存储未就绪,集群服务启动时会因无法访问OCR/Voting Disk而失败,共享存储搭建的过程中一般就已配置为开机自启动,不过为保险起见,任需先行进行检查。

启动各节点操作系统(正常启动即可)。

srvctl status asm -a

sqlplus / as sysasm

SELECT name, state, total_mb, free_mb FROM v$asm_diskgroup;

节点1:

节点2:

或则:asmcd lsdg

磁盘组的状态为MOUNTED即为正常!

2.2.验证集群服务状态(grid)

RAC集群默认配置为随操作系统自动启动,开机后可检查!!!

启动命令:

# 方法一:手动启动当前节点的集群

        crsctl start crs

# 方法二:启动所有节点集群

        crsctl start cluster -all

# 以 grid 用户执行以下验证

# 1. 检查整体集群状态

crsctl check cluster -all

# 期望输出节点状态为 ONLINE

# 2. 检查CRS整体状态

crsctl check crs

# 期望输出:
#   CRS-4638: Oracle High Availability Services is online
#   CRS-4537: Cluster Ready Services is online
#   CRS-4529: Cluster Synchronization Services is online
#   CRS-4533: Event Manager is online

# 3. 检查ohasd进程

crsctl check has

# 期望输出:Oracle High Availability Services is online

# 4. 检查ctssd(时间同步)

crsctl check ctss

# 期望输出:CTSS is in Observer mode 或 Active mode[citation:4]

# 5. 查看所有资源详细状态

crsctl status resource -t

2.3.验证ASM实例状态

ASM实例随集群启动而启动,无需单独操作。验证!!!

# 以 grid 用户执行

         srvctl status asm -n p19c01(节点名)

# 期望输出:ASM 实例 +ASM1 在节点 p19c01 上正在运行

2.4.启动数据库实例

# 以 oracle 用户执行

# 启动整个数据库(所有节点)

srvctl config database -d p19c0

# 或启动指定实例

srvctl start instance -d p19c0 -i p19c01

2.5.验证监听器和服务

验证监听器状态:lsnrctl status

若没有启动,就进行启动:lsnrctl start

再次验证:lsnrctl status

2.6.连接到数据库

-- 在任意一个节点上,查询 v$instance (只能看登录节点的视图)

SQL> SELECT INSTANCE_NAME, HOST_NAME, STATUS FROM V$INSTANCE;

-- 在任意一个节点上,查询 gv$instance (全局视图,能看到集群的所有节点)

SQL> SELECT INSTANCE_NAME, HOST_NAME, STATUS FROM GV$INSTANCE;

三、停止Oracle集群

3.1.停止数据库实例

目标状态:数据库 OPEN → MOUNT → SHUTDOWN 

# 以 oracle 用户执行

# 1. 查看当前数据库状态

srvctl status database -d p19c0

# 2. 停止整个数据库(所有节点)

srvctl stop database -d p19c0

# 或停止指定节点上的实例

srvctl stop instance -d orcl -i p19c01/p19c02

3.2.停止节点级服务(VIP、监听器)

关键提示:srvctl stop instance 只停数据库进程,不停VIP、监听器、ASM和集群服务,不能直接关机。

crsctl status resource -t | grep -E "vip|lsnr|ons"

# 以 grid 用户执行

# 1. 首先,停止所有依赖于 VIP 的资源。这里主要是监听器。

#    如果有数据库实例运行,也应该先停止数据库。

srvctl stop listener -n p19c01

3.3.停止ASM实例

# 以 grid 用户执行

# 停止指定节点上的ASM实例

srvctl stop asm -n p19c01

srvctl stop asm -n p19c02

3.4.停止集群服务(切换到root用户)

crsctl stop cluster -all

3.5.停止HAS(root)

crsctl stop has

3.6.关闭操作系统

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐