在Oracle RAC环境中,GI Home承载着Cluster Ready Services、ASM实例以及Oracle Clusterware的核心组件。对GI Home进行升级并不是简单的软件替换,它涉及OCR、Voting Disk以及节点间一致性等关键因素。本文围绕独立目录升级方式,说明如何规划、执行和验证升级过程。

为什么必须采用Out-of-Place方式升级GI Home
GI Home是Oracle Grid Infrastructure的安装目录,默认包含bin、crs、opmn、lib等子目录。Oracle数据库实例的Oracle Home可以存在多个版本,但集群件通常在所有节点上必须保持同一版本。如果将新版本直接覆盖旧GI Home,一旦升级中途失败,OCR和Voting Disk可能已经写入新版本格式,旧版本软件无法识别,导致集群无法启动且难以回退。
Out-of-place升级指的是将新版本安装到一个全新的目录,例如旧版本位于 /u01/app/19.0.0/grid,新版本安装到 /u01/app/21.0.0/grid。这种方式新旧共存,升级失败时只需重新指向旧GI Home即可恢复集群。Oracle官方也明确要求GI升级使用独立目录,不允许原地覆盖。
此外,out-of-place方式便于分批验证,可以在第一个节点升级后观察ASM磁盘组和OCR读写情况,再决定是否继续其余节点。即便需要回退,也只需要清理新目录和Inventory条目,不影响原环境。
升级前准备与集群健康检查
准备阶段最重要的工作是备份。OCR保存集群注册信息,Voting Disk保存节点成员关系,OLR保存本地集群配置。任何一项损坏都会导致集群无法启动。建议在升级前执行手动OCR备份,并将备份文件复制到共享存储和离线介质。
# 手动备份OCR ocrconfig -manualbackup # 导出OCR内容到文件,便于查看和恢复 ocrconfig -export /tmp/ocr_before_upgrade.exp # 查看已有自动备份 ocrconfig -showbackup
同时使用cluvfy进行升级前校验,该工具会检查节点可达性、共享存储权限、内存和swap、内核参数等。根据输出修复所有失败项,不要忽略警告。
$GRID_HOME/bin/cluvfy stage -pre crsinst -upgrade -n all -verbose
还应检查集群当前状态,确认所有资源正常,没有节点处于驱逐状态。使用 crsctl stat res -t 查看资源状态,使用 crsctl check cluster -all 检查集群一致性。升级前建议停止业务连接并将数据库实例切换到受限模式,或者预留维护窗口。存储空间也要提前确认,新GI Home和安装文件通常需要额外10GB以上空间。
分节点执行滚动升级
升级时先在共享目录解压新版本安装介质。Oracle集群件的安装包通常是一个zip文件,解压后直接运行gridSetup.sh。
mkdir -p /u01/stage/gi21 cd /u01/stage/gi21 unzip -q /path/to/LINUX.X64_213000_grid_home.zip
进入解压目录,以grid用户运行安装程序。为保证一致性,可以先在第一个节点执行静默安装,响应文件中需要指定新GI Home路径、Inventory位置以及节点列表。
cd /u01/stage/gi21 ./gridSetup.sh -silent \ -responseFile /home/grid/gi_upgrade.rsp \ -ignorePrereqFailure
响应文件中指定 ORACLE_HOME=/u01/app/21.0.0/grid,INVENTORY_LOCATION=/u01/app/oraInventory。安装完成后不要立即运行root脚本,先在所有节点完成软件安装。第二阶段轮到root操作,在第一个节点执行rootupgrade.sh。
# 以root身份运行 /u01/app/21.0.0/grid/rootupgrade.sh
该脚本会停止旧版本集群栈,更新OCR格式,启动新版本集群组件。脚本输出会提示在另一个节点运行之前确认本节点状态。运行结束后检查本地集群状态。
crsctl check crs crsctl stat res -t
若第一个节点升级成功且OCR、ASM、监听均正常,再登录第二个节点执行同样的rootupgrade.sh。滚动升级过程中,数据库服务会有短暂中断,但不会出现全集群同时停止。需要注意每个节点的ASM实例必须与新的GI Home版本匹配,不能出现一个节点新版本、另一个节点旧版本长期并存。如果某个节点失败,可优先使用旧GI Home启动集群并排查原因,而不要继续升级下一个节点。
升级后验证与旧版本清理
升级完成后需要使用cluvfy执行后置检查,确认所有节点均满足升级后的集群要求。
$NEW_GRID_HOME/bin/cluvfy stage -post crsinst -n all -verbose
检查结果应显示所有检查项通过。然后核对版本信息,确保所有节点返回相同版本。
crsctl query crs releaseversion crsctl query crs softwareversion srvctl config asm
还需验证OCR自动备份在新GI Home下能正常生成,可手动执行一次手动备份并查看输出。旧版本GI Home不要立即删除,建议保留至少一个完整备份周期,或者等待数据库稳定运行一周以上。清理旧GI Home前,先确认Inventory中旧版本条目可以移除,然后使用rm命令删除旧目录。如果今后需要审计或回退,保留安装日志和响应文件。
常见问题包括rootupgrade.sh因共享存储权限失败、OCR写保护导致升级中断、ASM实例无法挂载磁盘组等。出现这些问题时应检查存储节点权限、voting disk路径和asm_diskstring参数,通常能在日志中找到明确报错。处理完成后可从失败节点重新运行rootupgrade.sh,集群栈会自动恢复。整个升级过程务必在维护窗口内完成,并确保每个节点都通过验证后再进行下一节点操作。
Oracle RACGI Home升级RAC集群修改时间:2026-08-26 06:19:28