游乐游手机版
首页/数据库/文章详情

如何实现Oracle 19c RAC Grid软件无感知平滑升级

时间:2026-07-22 18:58
Oracle19cRACGrid平滑升级的关键在于选择滚动升级路径、精确调用opatch自动工具,并避免触发OCR和VOTING磁盘组重平衡。执行rootupgrade脚本时,节点短暂失联属于正常现象,但需确保集群保持存活状态。升级后需验证AFD(ASM过滤驱动)启用状态,并检查集群资源与ASM操作均无异常。

先说一个核心判断:Oracle 19c RAC的Grid平滑升级,关键不在于能否实现“完全无感知”,而在于如何将业务影响压缩到秒级。整个路径的核心其实只有三件事——选择正确的Rolling升级路径、准确把握opatchauto的调用时机,以及升级过程中避免触发OCR/VOTING磁盘组的Rebalance。只要这三方面把控到位,问题就能迎刃而解。

为什么rootupgrade.sh执行后节点会短暂失联

这其实是RAC集群重启CRS Stack的必经环节。rootupgrade.sh底层操作很直接:先执行crsctl stop crs清理旧进程,再通过crsctl start crs重新拉起新版资源。整个过程通常耗时40到90秒不等。在此期间,该节点上的VIP、SCAN Listener、数据库实例全部不可用——但这属于正常现象,并非异常。

  • 失联并不代表失败,而是RAC集群的正常设计行为。只要集群中其他节点仍在正常运行,SCAN VIP和应用连接会自动漂移到存活节点,业务端基本感知不到影响。
  • 但有一个关键前提:切勿在单节点RAC或集群中只剩1个存活节点的状态下执行升级——否则将直接导致整个集群中断。
  • 另外,升级前务必确认crsctl check cluster -all输出显示所有节点状态均为ONLINE,否则升级很可能在资源清理阶段卡住无法继续。

OPatch auto滚动升级时最常踩的三个坑

Oracle官方推荐使用opatchauto进行GI+DB的联合滚动升级,这个工具本身功能强大,但对环境高度敏感,任何一个环节未到位都可能导致失败。

  • 第一个隐患:所有节点的root用户必须配置好SSH互信。注意,不是grid用户,而是root。如果未配置,opatchauto在升级到第二个节点时会报错PRVE-0021: SSH connectivity not working,直接中断流程。
  • 第二个坑:如果环境中配置了ADG,则必须先完成备库补丁安装并验证同步正常,才能在主库执行升级。否则opatchauto检测到DG延迟就会中止升级,不留任何缓冲余地。
  • 第三个是路径问题:如果集群中各节点的GI_HOME路径不一致,例如node1为/u01/app/19.0/grid,node2为/u01/app/19.1/grid,那么opatchauto会直接拒绝启动滚动流程,并报错OPATCHAUTO-72036: GI home path mismatch across nodes。这一点在规划安装时就需要提前关注。

升级后OCR/VOTING磁盘组为何突然变慢

这并非错觉。19c默认启用ASM Filter Driver(AFD),但升级过程中如果没有显式启用AFD,OCR/VOTING磁盘组会悄悄回退到传统的ASMLIB或udev绑定模式。这样一来,I/O路径变长,尤其是在心跳写入密集时,延迟会明显上升。

  • 如何检查?使用asmcmd afd_state查看,如果返回AFD is 'enabled'则正常;若显示disabled,则需在所有节点执行asmcmd afd_configure后再重启ASM。
  • 升级完成后,务必运行ocrcheck -config确认OCR位置仍指向AFD路径(例如AFD:/OCR_VOTE),而不是原始设备名(如/dev/mapper/ocr01)。很多人因忽略这一步,后续排查性能问题耗费大量时间。
  • 如果未启用AFD,v$asm_diskgroupTYPE列可能显示REGULAR而非AFD,这正是性能下降的直接线索。

如何验证升级后集群真正“平滑”而非“侥幸”

很多团队升级后只跑通几个SQL就认为万事大吉,但真正的风险往往隐藏在后台资源调度的细节中。

  • 第一步:执行crsctl stat res -t -w "name like 'ora.%'" | grep -E "(OFFLINE|FAILED)",确保没有任何资源处于异常状态。
  • 第二步:查询gv$asm_operation,确认STATE = 'NORMAL',且没有残留的REBALANCE任务。即使EST_MINUTES显示为0,也要等SOFT=0后才能认为安全。
  • 最关键的一步:在业务低峰期,手动触发一次节点驱逐(在一个节点上执行crsctl stop crs -f)。然后观察VIP漂移时间、数据库重连情况,以及gv$cluster_interconnects是否有丢包。这才是“平滑”二字的实证。

还有一个细节容易被忽略:升级完成后,gridSetup.sh生成的新OHASD日志目录($ORACLE_BASE/crsdata//crsconfig)权限仍属于root。如果后续需要打PSU补丁,补丁写入该路径时会因权限不足而静默失败。届时只能手动执行chown -R grid:oinstall $ORACLE_BASE/crsdata。否则下一次补丁应用很可能成为深夜告警的源头。

来源:https://www.php.cn/faq/2801796.html
上一篇SQL中COUNT函数统计非空数据行数的方法 下一篇Oracle监控物化视图刷新进度与耗时方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
自增主键值从何而来?深入理解原理,告别只会auto_increment
数据库 · 2026-07-25

自增主键值从何而来?深入理解原理,告别只会auto_increment

KingbaseES推荐使用serial、bigserial、显式sequence或identity列实现自增主键。serial创建integer并关联序列,bigserial对应bigint;显式sequence可自定义起始值等参数;identity有generatedbydefault(允许指定值)与always(禁止)两种模式。

Linux下瀚高数据库授权文件过期及替换解决方案
数据库 · 2026-07-25

Linux下瀚高数据库授权文件过期及替换解决方案

在银河麒麟系统下,瀚高数据库hgdb-4 5试用授权20天到期后需替换正式授权文件。正确操作:停止服务,备份旧文件,将授权文件复制到 opt highgo hgdb-4 5 etc lic 并命名为hgdb lic,设置权限600和属主highgo:highgo,再启动服务。禁止直接修改data目录下的license info文件。

Oracle BLOB实时同步的5大技术挑战与难点解析
数据库 · 2026-07-25

Oracle BLOB实时同步的5大技术挑战与难点解析

OracleBLOB实时同步面临分片组装、多列隔离、长事务跨窗口、事务回滚及大对象资源控制等技术挑战,必须在日志中精确还原完整字段值,才能保证源端与目标端数据完全一致,这对同步系统的稳健性提出了高要求。

MySQL禁用redo日志导致全备失败
数据库 · 2026-07-25

MySQL禁用redo日志导致全备失败

MySQL全量备份失败是由于数据定义语言操作触发排序索引构建,禁用重做日志导致XtraBackup无法获取一致性备份。测试验证表明,优化表语句即使无数据也会触发该问题。根本原因在于排序索引构建过程跳过了重做日志记录,破坏了备份的一致性。

Kafka架构图优化与改进的全面详细步骤与实践指南
数据库 · 2026-07-25

Kafka架构图优化与改进的全面详细步骤与实践指南

Kafka作为实时数据流处理的核心中间件,其底层架构虽已相当成熟,但在实际生产环境中,要充分发挥其性能潜力,仍需落实到具体的调优与架构改造上。核心目标可归纳为三点:如何承载更高的吞吐量、如何保障数据不丢失、以及故障发生时如何快速恢复。本文将从这几个关键方向出发,深入探讨如何真正榨干Kafka集群的性