Oracle数据库Ubuntu版如何升级
小樊
32
2026-01-01 10:26:05
Ubuntu上Oracle数据库升级指南
一 升级策略与前置准备
- 采用跨版本新建 Oracle Home 的“异地升级”(out-of-place),避免就地升级带来的回退复杂与停机不可控;在新家完成安装与补丁后,再升级数据库。Oracle 官方推荐此方式,并建议在升级前为数据库应用最新 Release Update(RU)与月度推荐补丁(MRP)。同时,注意 Oracle Database 19c 是非 CDB 架构的终端版本,如仍在使用非 CDB,建议规划迁移至 CDB/PDB 架构。升级前务必完成对数据库与应用的兼容性验证(特性变更、弃用/不再支持项、第三方应用适配)。备份方面,使用 RMAN 执行包含归档日志的全库备份,确保可回滚。上述要点与流程要求见 Oracle 升级快速指南与官方文档。
二 具体升级路径
- 路径A(推荐)AutoUpgrade 全自动升级
- 在新目录安装新版本 Oracle 软件,并先打齐 RU/MRP;
- 从 My Oracle Support 获取并解压最新的 preupgrade.jar 到新 Oracle Home 的 $ORACLE_HOME/rdbms/admin;
- 以源库 SYS 运行预检查:java -jar $ORACLE_HOME/rdbms/admin/preupgrade.jar;按报告修复问题;
- 启动升级:java -jar $ORACLE_HOME/rdbms/admin/autoupgrade.jar -config <your_config_file>;
- 升级完成后,使用 utlrp.sql 重编译无效对象,并核查日志与组件状态。AutoUpgrade 可显著简化流程,适合生产环境的标准化升级。
- 路径B DBUA 图形化升级
- 在新 Oracle Home 中启动 DBUA(可在安装器里启动,或事后手动启动);
- DBUA 会自动执行升级脚本、最小化停机;
- 要求与限制:DBUA 升级前需准备最新的 preupgrade.jar;若源/目标 Oracle Home 所有者不同,会报 PRKH-1014,需保证属主一致或改用手动升级;19c 为 non-CDB 终端版本;如启用 Oracle Database Vault,需满足相应前置要求。
- 路径C 手工升级脚本(适合无法使用 GUI 的场景)
- 关闭应用,仅保留监听:lsnrctl stop;
- 以 SYS 登录:sqlplus / as sysdba,执行:shutdown immediate;
- 启动到升级模式:startup upgrade;
- 执行升级脚本:@?/rdbms/admin/catupgrd.sql(或对应版本脚本);
- 重启:shutdown immediate;startup;
- 重编译无效对象:@?/rdbms/admin/utlrp.sql;
- 核查:select * from v$version; 与 utl_recomp_errors 视图。上述手工流程与命令为常用标准做法。
三 Ubuntu 环境要点
- 安装基础依赖(以 root 执行):sudo apt update && sudo apt install -y alien libaio1 unixodbc;
- 若拿到的是 RPM 包,可用 alien 转换:sudo alien -dv oracle-package.rpm,再用 dpkg 安装;
- 为兼容部分 Oracle 安装/脚本对 RHEL 兼容层的假设,必要时建立符号链接:
sudo ln -s /usr/bin/awk /bin/awk;sudo ln -s /usr/bin/rpm /bin/rpm;sudo ln -s /usr/bin/basename /bin/basename;sudo ln -sf /bin/bash /bin/sh;
创建 rc.d 链接:for i in 0 1 2 3 4 5 6 S; do sudo ln -s /etc/rc$i.d /etc/rc.d/rc$i.d; done;sudo ln -s /etc/init.d /etc/rc.d/init.d;
模拟发行版信息:echo “Red Hat Linux release 4” > /etc/redhat-release;
- 创建 oracle 用户与目录、内核与资源限制、环境变量(ORACLE_BASE、ORACLE_HOME、PATH 等)按 Oracle 安装指南配置。上述为 Ubuntu 上常见的兼容性与环境准备工作。
四 升级后验证与回退
- 版本与组件:select * from v$version; 检查组件状态与无效对象数量(utl_recomp_errors 应为空);
- 监听器与连接:lsnrctl status;用应用或 sqlplus 进行连接与基本业务回归测试;
- 回退预案:由于采用异地升级,回退只需切回旧的 Oracle Home 启动原库即可;如升级前创建了保证还原点(Guaranteed Restore Point)且启用了 ARCHIVELOG/FLASHBACK,可按需闪回。务必在升级前完成 RMAN 全备与验证。