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

Oracle RAC 19c升级到21c的风险与注意事项

时间:2026-08-17 15:08
升级 Oracle RAC 19c 到 21c 前,必须先验证 GI 与 DB Home 的版本兼容性。由于 21c GI 与 19c GI 存在兼容限制,升级顺序一旦出错,极易引发 ASM 磁盘组挂载失败、OCR 元数据损坏等严重问题。标准做法是先使用 runInstaller -upgrade

升级 Oracle RAC 19c 到 21c 前,必须先验证 GI 与 DB Home 的版本兼容性。由于 21c GI 与 19c GI 存在兼容限制,升级顺序一旦出错,极易引发 ASM 磁盘组挂载失败、OCR 元数据损坏等严重问题。标准做法是先使用 runInstaller -upgrade 完成 GI 升级,再执行数据库升级,同时检查 crsctl query crs activeversion 与 softwareversion 是否保持一致。

Oracle RAC 19c升级到21c有哪些风险

升级前必须验证 GI 和 DB Home 的版本兼容性

Oracle RAC 19c 升级到 21c 并不是简单替换数据库软件,而是同时涉及 Grid Infrastructure(GI)与 Database Home 两个层面的升级。21c 的 GI 必须与 21c 的 DB Home 配合使用,而 19c 的 GI 不能直接管理 21c 数据库实例——如果强制启动,通常会出现 ORA-01092: ORACLE instance terminated 或 CRS-2674: Start of 'ora.dbname.db' on 'node1' failed 等报错。正确流程是先将 GI 升级到 21c,再升级 DB Home;如果顺序颠倒,可能导致集群资源注册失败、ASM 实例无法挂载磁盘组,甚至影响集群稳定性。

  • 必须通过 runInstaller -upgrade 模式升级 GI,不能采用 deinstall + install 的方式,否则 OCR 与 voting disk 的元数据存在损坏风险
  • 19c GI 的 root.sh 脚本无法识别 21c 的内核模块签名,需提前在所有节点执行 rpm -Uvh --force oracle-gridengine-21c-*.rpm(仅适用于 OL8/OL9)
  • 升级完成后要检查 crsctl query crs activeversion 与 crsctl query crs softwareversion 是否一致,如差值大于 0.1,通常说明 GI 与 DB 版本存在错配

多租户容器数据库(CDB)的 PDB 兼容性陷阱

当 19c 的 CDB 升级到 21c 后,PDB 并不会自动完成升级,必须显式执行 ALTER PLUGGABLE DATABASE pdb_name UPGRADE。但如果 PDB 内存在自定义 Java 类、外部表指向 NFS 路径,或仍使用已废弃的 UTL_FILE_DIR 参数,升级过程就可能卡在 catupgrd.sql 阶段,而且错误日志往往只显示模糊的 ORA-00600: internal error code。很多情况下,真正的问题根源并不在主日志中,而是在 PDB_PLUG_IN_VIOLATIONS 视图里残留了未处理的不兼容项。

  • 升级前必须运行 DBMS_PDB.CHECK_PLUG_COMPATIBILITY,并重点检查返回结果中的 VIOLATION 列,常见问题包括:PDB 使用了 19c 中已弃用的 SEC_PROTOCOL_ERROR_TRACE_ACTION 参数
  • 21c 默认启用 ENABLE_PLSQL_DEBUG,若 PDB 中存在大量未编译的 PL/SQL 包体,catuppst.sql 可能因编译超时而中断,建议提前执行 ALTER SESSION SET PLSQL_DEBUG=FALSE
  • 升级后首次打开 PDB 时,v$pdbs.status 可能显示为 UNUSABLE,这通常不代表数据损坏,而是后台进程正在完成元数据刷新,最长可能持续 5 分钟

RAC 特有参数在 21c 中的行为变更

进入 21c 后,Oracle RAC 的部分关键参数行为已经发生变化:_gc_read_mostly_locking 的默认值由 TRUE 调整为 FALSE,cluster_database_instances 也不再支持动态修改。此外,如果 remote_listener 仍然指向 19c 的 SCAN 地址,新节点将无法正常加入集群。麻烦在于,这类变更通常不会主动触发明显告警,但影响却非常直接——轻则跨节点查询性能下降,重则 CRS 资源持续 restart,出现反复拉起的问题。

  • 升级完成后应立即检查 show parameter gc_read_mostly_locking,如果业务依赖读多数锁优化(如报表型 PDB),需手动将其调整回 TRUE
  • srvctl modify database -d dbname -n node_count 在 21c 中已不再生效,需改用 ALTER SYSTEM SET cluster_database_instances = N SCOPE=SPFILE 并重启数据库
  • SCAN 监听器需要重新创建:旧 SCAN 的 VIP 地址在 21c GI 中会被标记为 legacy,需执行 srvctl add scan -n new-scan-name,否则即使 lsnrctl status 显示监听正常,客户端连接仍可能随机失败

补丁冲突和 RU 应用窗口重叠

19c 的最后一个 RU 停留在 19.24(2024 年 Q2),而 21c 的第一个 RU 为 21.3(2024 年末)。Oracle RAC 19c 升级到 21c 时,一个非常常见的风险是误将 19c 的 RU 补丁用于 21c 环境,例如错误执行 opatch apply 19c_ru_patch。此时 OPatch 往往会直接报错:OPatch cannot apply the patch because it is not applicable for the current Oracle Home。但真正麻烦的不只是报错本身,还可能悄悄修改 $ORACLE_HOME/inventory/ContentsXML/comps.xml,导致后续 opatch lsinventory 输出异常,严重时甚至影响 dbca 创建新数据库。

  • 升级前务必清理 $ORACLE_HOME/cfgtoollogs/opatch 目录下所有 19c 补丁日志,避免 OPatch 自动加载旧补丁元数据
  • 21c 安装完成后首次执行 opatch auto,必须分别指定 -oh $GRID_HOME 和 -oh $ORACLE_HOME 来处理 GI 与 DB Home,混用会触发 OPATCHAUTO-72019 错误
  • 升级窗口期间不要执行 datapatch,因为它可能在 21c 环境中尝试调用 19c 的 catbundle.sql,从而造成数据字典视图结构混乱

Oracle RAC 升级过程中,最隐蔽的风险往往不在日志报错本身,而在 CRS 资源状态与数据库真实服务能力之间存在“时间差”。例如,crsctl stat res -t 显示所有资源均为 ONLINE,但 SELECT * FROM gv$instance 却缺少某个节点实例。这种状态不一致通常会持续数分钟,足以让负载均衡器错误地将流量分发到假死节点,进而影响业务连接与集群可用性。

来源:https://www.php.cn/faq/2993884.html
上一篇MySQL事务隔离级别开销大如何优化降低性能损耗 下一篇Oracle安装虚拟内存怎么设置与配置方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

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

同类最新

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

更多
Redis是什么:核心特性、架构与应用场景解析
数据库 · 2026-09-01

Redis是什么:核心特性、架构与应用场景解析

Redis是一款基于内存的键值型NoSQL数据库,以超高读写速度和丰富的数据结构著称。本文系统梳理Redis的核心特性、架构组成、性能优势及典型应用场景,并通过与Memcached、MySQL、MongoDB的对比,帮助开发者快速判断Redis是否适合当前业务需求。

Windows 安装 MongoDB 完整图文教程
数据库 · 2026-09-01

Windows 安装 MongoDB 完整图文教程

本文详细介绍在 Windows 系统上安装 MongoDB 的完整流程。从官网下载 MSI 安装包开始,逐步演示自定义安装路径、配置 Windows 服务、跳过 MongoDB Compass 等关键选项,并提供通过系统服务列表验证安装是否成功的方法,帮助开发者快速搭建本地 MongoDB 环境。

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动
数据库 · 2026-09-01

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动

本文详解在 Linux 系统下安装 MongoDB 的完整流程,涵盖依赖包安装、二进制包下载解压、环境变量配置、数据与日志目录创建及服务启动验证。通过标准化命令与路径说明,帮助开发者快速完成部署并确认服务状态。

MacOS安装MongoDB完整教程
数据库 · 2026-09-01

MacOS安装MongoDB完整教程

本文介绍在MacOS系统下安装MongoDB的完整流程,涵盖下载、解压、目录配置、环境变量设置及服务启动。通过明确的命令与参数说明,帮助开发者快速完成环境搭建并验证安装结果。

Ubuntu系统安装与配置Redis完整指南
数据库 · 2026-09-01

Ubuntu系统安装与配置Redis完整指南

本文详解在Ubuntu系统中安装Redis的两种主流方式:apt在线安装与源码编译安装。涵盖版本选择逻辑、服务启停与状态检查、连接验证方法,以及在线练习工具与桌面GUI客户端的对比与使用建议,帮助开发者快速搭建并验证Redis运行环境。