GI升级失败后能否在线回退取决于crsctl set crs activeversion是否执行:未执行可rootcrs.sh -downgrade -online回退;已执行则OCR格式已更新,必须删节点重装,并注意profile4downgrade.xml权限修复。

GI升级失败后不能直接重跑root.sh或硬重启,必须先判断是否已执行crsctl set crs activeversion——没执行就还能在线回退,执行了就得删节点重装。
确认是否来得及在线降级
Oracle GI升级中断后能否“原地挽回”,关键看crsctl set crs activeversion有没有在最后一个节点上执行。这个命令是升级的不可逆分水岭:
- 没执行:说明OCR和Voting Disk仍为旧版本格式,可用
rootcrs.sh -downgrade -online从新GI_HOME回退 - 已执行:OCR头版本被写死为新格式,强行降级会触发
Invalid version in OCR header,后续cssd无法启动 - 验证方法:在所有节点查
ocrcheck -config输出末尾的Cluster registry integrity check succeeded是否出现;再看$GRID_HOME/log/*/client/ocrcheck.log里有无ORA-15077或PRCR-1076类错误
在线降级必须按顺序执行三步
降级不是单节点操作,必须协调所有节点动作,否则OCR/Voting Disk元数据撕裂:
- 先在待降级节点上运行
crsctl stop crs(不加-f,让进程软退出) - 在**其他已成功升级的节点**上,用新GI_HOME路径执行:
clscfg -nodedowngrade -h <target_node_hostname> - 回到待降级节点,从新GI_HOME执行:
rootcrs.sh -downgrade -online(若不存在则用rootcrs.pl) - 最后统一从旧GI_HOME启动:
crsctl start crs,并立即验证crsctl check crs返回CRS-4638
已过activeversion节点只能删节点重装
一旦看到ocrcheck报Invalid version in OCR header或ohasd.bin反复forkcssdmonitor后崩溃,说明OCR已写入新格式,降级失效:
- 别在故障节点上
rm -rf $GRID_HOME——这会留下OCR残留,导致后续addnode失败 - 必须从健康节点以root执行:
crsctl delete node -n <faulty_node> - 故障节点仅做轻量清理:
rm -f /etc/oracle/olr.loc /etc/oracle/ocr.loc,以及rm -rf $GRID_HOME/crs/install/* - 重装GI时,
addnode.sh参数中的CLUSTER_NEW_NODES必须与OCR里注册的节点名完全一致,大小写都不能错
最容易被忽略的权限坑:profile4downgrade.xml
这个文件在11g→19c升级后常被遗留,但权限不对会导致整个GI加节点流程卡死:
- 检查命令:
ls -l $GRID_HOME/crs/install/profile4downgrade.xml - 若权限是
-rw-------(仅root可读),grid用户就读不到,后续rootaddnode.sh会静默失败 - 修复只需两行:
chmod 644 $GRID_HOME/crs/install/profile4downgrade.xml&&chown grid:oinstall $GRID_HOME/crs/install/profile4downgrade.xml - 注意:该路径在19c中固定为
/u01/app/19.0.0.0/grid/crs/install/profile4downgrade.xml,别拼错


















