Ubuntu Oracle如何更新与升级
小樊
38
2025-12-18 18:24:33
Ubuntu 上的 Oracle 更新与升级指南
一 适用范围与总体原则
- 区分三类对象:
- Ubuntu 操作系统;2) Oracle 数据库软件(如 19c/21c/23ai);3) Oracle Java/JDK。
- 基本原则:
- 先备份(全库 RMAN、参数文件、监听与 TNS、应用配置),再变更。
- 尽量在测试环境验证再上生产。
- 明确是补丁/小版本升级(如 19.3 → 19.19)还是跨版本升级(如 12c → 19c),路径不同。
- 升级前记录关键参数:COMPATIBLE、字符集、SGA/PGA、归档模式、监听端口、DB_UNIQUE_NAME 等。
二 操作系统层面的更新与升级
- Ubuntu 常规更新(不影响数据库运行):
- 更新索引与软件包:
sudo apt update && sudo apt upgrade -y
- 发行版升级:
sudo do-release-upgrade(跨版本时执行,注意兼容性评估与回退方案)
- 如需对内核进行零停机热补丁,Oracle 提供 Ksplice Uptrack(适用于 Oracle Linux;Ubuntu 上通常不直接使用):
- 常用命令:
uptrack-upgrade、uptrack-show、uptrack-remove、uptrack-uname
- 建议同时用包管理器维护磁盘上的内核,重启时可引导到新内核。以上工具与流程以 Oracle Linux 为主,Ubuntu 场景请优先采用标准的
apt/do-release-upgrade 机制。
三 Oracle 数据库软件与补丁更新
- 小版本/补丁(推荐):使用 OPatch 应用 Interim Patch/One-off Patch。
- 准备:确认 $ORACLE_HOME、关闭监听与数据库(或确保无业务影响),备份 $ORACLE_HOME。
- 获取补丁并解压,校验权限:
unzip p<BUGID>_Linux-x86-64.zip,chown -R oracle:oinstall <patch_dir>
- 进入补丁目录:
cd $ORACLE_HOME/OPatch
- 预检:
./opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <patch_dir>
- 应用:
./opatch apply(按提示执行)
- 启动监听与数据库,执行
utlrp.sql 重编译无效对象:sqlplus / as sysdba @?/rdbms/admin/utlrp.sql
- 验证:
./opatch lsinventory 查看已安装补丁。
- 跨版本升级(示例:12c → 19c):
- 规划与备份:RMAN 全备、参数与目录、监听、TNS、应用连接串。
- 安装 19c 软件到新 ORACLE_HOME(不要覆盖旧版本)。
- 使用 DBUA(图形或静默)执行升级,或手工升级(升级数据字典/组件)。
- 升级后:运行
utlrp.sql,检查 v$version、无效对象、告警日志与监听器。
- 回归测试与性能回归,必要时回滚预案(基于备份与快照/Data Guard)。
- 说明:OPatch 是 Oracle 官方补丁工具,适用于 Linux x86-64 环境的数据库补丁管理;DBUA 为图形化升级向导,可简化跨版本升级流程。
四 Oracle Java JDK 的更新与切换
- 优先方案:使用 OpenJDK(Ubuntu 官方仓库维护,更新及时):
- 安装:
sudo apt install openjdk-11-jdk(或 openjdk-17-jdk/openjdk-21-jdk)
- 切换版本:
sudo update-alternatives --config java 与 --config javac
- 如需 Oracle JDK:
- 可使用 WebUpd8Team PPA(历史方案,注意版本可用性):
sudo add-apt-repository ppa:webupd8team/java
sudo apt update
- 安装:
sudo apt install oracle-java8-installer(或 oracle-java11-installer)
- 设为默认:
sudo update-java-alternatives -s java-8-oracle
- 验证:
java -version、javac -version
- 建议:生产环境优先 OpenJDK LTS,如需 Oracle JDK,请遵循其许可并关注仓库可用性与生命周期。
五 回滚与常见问题处理
- 回滚策略:
- 补丁回滚:使用 OPatch 回退(
./opatch rollback -id <BUGID>),再重启实例与监听。
- 跨版本回滚:基于 RMAN 备份恢复至旧库(时间点或 SCN),或启用 Data Guard 快速切换。
- 常见问题与要点:
- 升级前确保 COMPATIBLE 参数设置合理,避免升级后无法降级。
- 升级后执行
utlrp.sql 重编译,检查 v$invalid_object。
- 客户端/应用连接串、JDBC URL、字符集与 NLS 设置需与数据库一致。
- 监听与服务注册状态检查:
lsnrctl status、tnsping、sqlplus 连通性。
- 变更窗口、回滚预案与演练需提前完成并留档。