RAC 是多节点、多进程、多资源的复杂架构。顺序不对、权限不对、参数不对,轻则监控误报、VIP 漂来漂去,重则实例夯死、OCR 损坏。
前期准备 Checklist
序号 | 动作 | 说明 |
---|---|---|
1 | 检查各节点资源状态 | crsctl stat res -t |
2 | 提前申请停机窗口 | 业务、监控、备份窗口三方确认 |
3 | 逻辑备份(重要系统) | Data Pump / RMAN archivelog backup |
4 | 关闭监控告警 | 避免人为操作触发短信轰炸 |
5 | 两台以上节点做时间同步 | ntpq -p 确保差距 < 1 s |
停机流程:自上而下、先业务后集群
原则:先停“对外服务”,再停“数据库内部”,最后停“集群件”。 下面以 节点 2 为例,所有命令均在对应用户下执行。
停监听(oracle 用户)
srvctl stop listener -n node2
确认:lsnrctl status
无 STATUS: READY
输出。
停 DB Console(可选,若启用)
emctl stop dbconsole
停实例(oracle 用户)
- 单实例:
srvctl stop instance -d racdb -i racdb2
- 全库停机(所有节点):
srvctl stop database -d racdb
停 ASM(仅在 10g,11g+ 跳过)
srvctl stop asm -n node2
11g 以后 ASM 由 CRS 托管,随 CRS 关闭而关闭,勿手动。
停 Nodeapps & VIP(oracle 用户)
srvctl stop nodeapps -n node2
srvctl stop vip -n node2 # 若上一步已包含可省略
停 Service(如有自定义 service)
srvctl stop service -d racdb -s service1
停 SCAN 资源(任一节点执行即可)
srvctl stop scan_listener
srvctl stop scan
注意:SCAN 只需停一次,所有节点共享。
最终验证
crsctl stat res -t | grep -i offline
所有资源应显示 OFFLINE
。若仍有 ONLINE
,用 crsctl stop res <res_name>
单独处理。
启动流程:自下而上、先集群后业务
顺序与停机完全相反。
启动集群件(root 或 grid)
crsctl start crs # 单节点
等待 crsctl check crs
四条全为 healthy
。
启动 Nodeapps & VIP
srvctl start nodeapps -n node2
srvctl start vip -n node2
启动数据库
- 全库:
srvctl start database -d racdb [-o open]
- 单实例:
srvctl start instance -d racdb -i racdb2 [-o open]
启动监听
srvctl start listener -n node2
启动 Service
srvctl start service -d racdb -s service1
启动 DB Console
emctl start dbconsole
启动 SCAN
srvctl start scan
srvctl start scan_listener
启动后验证
维度 | 命令 | 期望结果 |
---|---|---|
集群健康 | crsctl check crs | 四条 healthy |
资源状态 | crsctl stat res -t | 关键资源 ONLINE |
监听 | lsnrctl status | 实例已注册 |
数据库 | sqlplus / as sysdba select status from v$instance; | OPEN |
业务 | 应用功能回归测试 | 交易成功、无报错 |
回退策略
如果升级或参数调整失败,只需:
srvctl stop database -d racdb
# 恢复备份或回退参数
srvctl start database -d racdb
即可完成回退。
FAQ 高频踩坑
- 为什么
srvctl stop asm
报错 PRKH-1014? 11g+ ASM 被 CRS 托管,请改用crsctl stop res ora.asm -n node2 -f
。 - 停库时一直
Stopping but not yet OFFLINE
? 通常有活动会话,先alter system checkpoint;
或shutdown immediate
单节点,再srvctl
。 - VIP 启动失败报
PRCR-1079
? 检查/etc/hosts
与 DNS 解析,确保 SCAN 与 VIP 能双向解析。
“标准启停”不仅是命令的堆砌,更是流程、权限、顺序、回退四位一体的系统工程。