Oracle集群的启停操作
Oracle RAC集群启停操作指南摘要 本文详细介绍了Oracle RAC集群的正确启停顺序和操作步骤。启动顺序为:操作系统→集群服务→数据库实例,关机顺序则相反。关键点包括: 启动时需要先验证共享存储状态,再检查集群服务、ASM实例和监听器 停止时应先关闭数据库实例,再停止节点服务、ASM实例 最后关闭集群服务和HAS 所有操作需严格遵循层级依赖关系,确保VIP、监听器等核心组件正常运行 文中
目录
一、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.关闭操作系统
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)