Oracle 19c RAC不支持在线节点缩容,缩容本质是停用并彻底清理已存在节点;须满足无业务会话、无OCR/Voting Disk及ASM托管、数据库实例已迁出或关闭等前提,再按序执行crsctl stop crs -f、crsctl delete node -n、OS级清理及OCR备份验证。

确认缩容是否被官方支持且满足前提条件
Oracle 19c RAC **不支持在线节点缩容**——即不能在集群运行状态下直接“删掉一个节点”。所谓“缩容”,本质是**停用并彻底清理一个已存在的节点**,属于维护操作,不是动态扩缩容能力。必须先确认:该节点当前无关键业务会话、无OCR/Voting Disk托管、无ASM实例托管(除非是Flex ASM架构)、且所有数据库实例已从该节点迁出或关闭。
常见误判点:crsctl delete node 命令看似能直接删除,但它只适用于“节点已完全离线且未托管任何集群资源”的干净状态;若节点仍注册在CRS中、crsctl check cluster -all 显示该节点为ONLINE,强行执行会失败甚至破坏OCR一致性。
- 检查节点资源托管情况:
crsctl status resource -t -init和crsctl status resource -t,确认该节点上无ora.DATA.dg、ora.registry.acfs、ora.<db_name>.db</db_name>等关键资源 - 确认ASM实例未在该节点运行:
ps -ef | grep asm_pmon,若存在asm_pmon_+ASMx进程,需先在其他节点完成ASM磁盘组迁移或重新平衡 - OCR和Voting Disk必须由剩余节点共同管理,且不在待缩容节点本地存储——可通过
ocrcheck和crsctl query css votedisk验证
执行节点停用与CRS资源清理
缩容的核心动作不是“删”,而是“解绑+清理”。必须按顺序执行,跳过任意一步都可能导致后续无法启动集群或OCR损坏。
- 在待缩容节点上,以root用户停止本地CRS栈:
crsctl stop crs -f(-f强制停止,避免等待超时) - 在任一存活节点上,以root用户执行节点移除:
crsctl delete node -n <node_name></node_name>,例如crsctl delete node -n rac03 - 该命令会自动触发OCR更新,但需人工验证:
ocrdump -backupfile /tmp/ocr.bkp比对前后内容,确认该节点条目已消失 - 若报错“node is still active”,说明该节点CRS未真正停止,或
olsnodes -s仍返回该节点状态,需回退检查
清理操作系统级残留与验证连通性
CRS层面清理完成后,OS层残留常被忽略,但直接影响后续扩容或故障恢复:比如未删的/etc/oracle/ocr.loc、残留的Grid用户环境变量、或hosts文件中未同步更新的VIP条目。
- 在待缩容节点上,手动删除Grid安装目录(如
/u01/app/19.0.0/grid)及Oracle Base目录(如/u01/app/oracle),但保留OS基础配置(如内核参数、limits.conf) - 检查所有存活节点的
/etc/hosts,确保已移除该节点的public、private、VIP、SCAN相关条目;否则客户端连接SCAN时可能因DNS解析延迟或TNS错误失败 - 验证集群心跳网络:在剩余节点上执行
ping -c 3 rac01-pri和ping -c 3 rac02-pri,确认私网连通性未因节点退出而变更路由 - 特别注意:若使用DHCP分配私网IP,缩容后剩余节点的私网子网掩码或网关可能需重调,避免ARP广播风暴
缩容后必须验证的三个关键点
缩容完成不等于安全完成。RAC对节点数变化敏感,尤其在OCR同步、ASM再平衡、监听器注册三个环节容易“表面正常、实际埋雷”。
-
crsctl check cluster -all必须在所有存活节点返回 SUCCESS,且输出中不再列出已缩容节点名 - 检查ASM磁盘组再平衡状态:
SELECT state, rebalance_power FROM v$asm_diskgroup;,若state = 'REBALANCING',需等完成后再认为稳定;否则新IO请求可能因元数据不一致失败 - 登录数据库执行:
SELECT inst_id, instance_name, host_name FROM gv$instance;,确认结果集行数与当前节点数严格一致;若有残留实例名(如rac03),说明DB实例未真正注销,需查srvctl status database -d <db_name></db_name>并手工停用
最容易被跳过的其实是OCR备份——缩容后立即执行 ocrconfig -manualbackup,因为OCR变更不可逆,没备份等于没缩容。


















