在 Ubuntu 上升级 Oracle 的正确思路
- 在 Ubuntu 上,Oracle 官方并不提供面向 Ubuntu 的 DEB 版数据库软件;常见做法是使用 Oracle 通用安装程序(runInstaller) 在新目录安装 19c/23ai 的新 Oracle Home,然后升级现有数据库。强烈建议采用异机/新目录安装(Out-of-Place),避免就地升级带来的回退复杂与停机不可控。升级前务必完成全量备份(RMAN 或冷备)、核对认证与平台支持、并准备好回退方案。此外,Oracle 明确:19c 是非 CDB 架构的终止版本,如仍使用非 CDB,建议规划迁移到 CDB/PDB 架构。
升级路径与准备
-
升级路径与工具
- 数据库升级推荐使用 AutoUpgrade(两命令完成升级),或在新 Oracle Home 中运行 DBUA(图形或静默模式)。两者都会自动执行升级脚本、减少停机时间。
- 使用 DBUA 前,需在新 Oracle Home 的 $ORACLE_HOME/rdbms/admin 放置并解压最新的 preupgrade.jar(MOS 文档 884522.1),以执行升级前检查与生成修复脚本。
- 若启用 Oracle Database Vault,升级前需满足其前置要求;DBUA 不支持源/目标 Oracle Home 属主不同(否则报错 PRKH-1014)。
- 计划使用保证还原点时,升级期间需开启 ARCHIVE LOG 与 FLASHBACK(可通过
select log_mode, flashback_on from v$database; 确认)。
-
环境准备清单
- 备份:对数据库与控制文件、参数文件、监听与口令文件做RMAN 全备或冷备;准备回退脚本与演练计划。
- 空间与目录:为新 ORACLE_HOME 预留充足空间,并准备新的 inventory 位置(若需要)。
- 依赖与内核:安装 libaio1、bc 等依赖;确保系统参数满足新版本要求(如共享内存、文件句柄等)。
- 兼容性:核对应用与中间件的驱动/客户端版本是否支持目标数据库版本。
标准升级步骤
-
安装新版本软件(异机/新目录)
- 以 oracle 用户解压安装介质,运行
./runInstaller 在新目录安装 19c/23ai 软件;安装过程中选择“仅安装软件”。完成后按提示以 root 执行新 $ORACLE_HOME/root.sh。
-
运行升级前检查
- 将最新的 preupgrade.jar 放到新 $ORACLE_HOME/rdbms/admin 并解压,执行预检查并修复问题(生成修复脚本与清单)。
-
升级数据库(两种方式)
- 方式 A(推荐)AutoUpgrade
- 使用 AutoUpgrade 执行“分析—修复—升级”流程,支持批量与静默,自动化程度高,停机更可控。
- 方式 B DBUA
- 从新 Oracle Home 启动 DBUA(图形或
-silent 静默),按向导选择要升级的数据库(支持 CDB/PDB 与 非 CDB),DBUA 会自动调用相应升级脚本并完成升级后任务。
-
升级后任务
- 执行必要的 utlrp.sql 重编译无效对象;按需收集统计信息;复核
v$version、dba_registry 等视图确认组件与版本状态。
-
切换与回退
- 确认应用稳定后,逐步将业务切换到新 ORACLE_HOME;保留旧 ORACLE_HOME 与备份,待观察期结束再下线。
常见场景与注意事项
-
从 11g/12c 升级到 19c/23ai
- 建议先升级到 19c LTS,再评估是否迁移至 23ai;19c 仍可获得安全与关键修复,支持周期更长。
- 若当前为 非 CDB,规划迁移到 CDB/PDB 架构,以便获得后续新版本能力与更长的支持窗口。
-
使用 DBUA 的限制与提示
- 源/目标 Oracle Home 必须属主一致;若不一致,改用 AutoUpgrade 或手动升级。
- 升级期间如需保证还原点,确保数据库处于 ARCHIVELOG 与 FLASHBACK 开启状态。
-
关于“把 RPM 转 DEB 再升级”的做法
- 不建议通过 alien 等方式将 Oracle RPM 转为 DEB 来升级生产库,易引入依赖与兼容性问题。Oracle 官方在 Ubuntu 上以 runInstaller 安装为主流、可支持的方式。
重要提示
- 升级属于高风险变更,务必在测试环境充分演练,并与业务方协调停机窗口与回退策略。
- 生产环境操作前请再次核对 MOS 文档与官方安装/升级指南,确保补丁级别、依赖与参数满足要求。