定期更新 Oracle 26ai 的 RU 是日常运维的一部分。笔者把这次从 23.26.2 升级到 23.26.4 的操作步骤记录下来,供有类似需求的读者参考。
01 | 找到并下载补丁
通过文档 888.1 可以快速定位需要的 RU:
This was MOS Document ID: 888.1 in Legacy MOS.

笔者选择了当时最新的 10 月发布的 RU:
Patch 40007731: DATABASE RELEASE UPDATE 23.26.4.0.0
打补丁用的 OPatch 工具通常也要匹配版本,因此同时下载最新的 OPatch,同样是 10 月发布:

02 | 升级 OPatch
先查看当前版本:
bash
[oracle@alfred-db 23.26.4]$ $ORACLE_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.51
OPatch succeeded.
替换前请确认处于维护窗口、无其他会话正在使用 OPatch,并已对 ORACLE_HOME 做备份;若新版本异常,可将 OPatch 目录删除后用 OPatch_bak 恢复。备份旧目录并解压新版本:
bash
mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bak
[oracle@alfred-db 23.26.4]$ unzip p6880880_230000_Linux-x86-64.zip -d $ORACLE_HOME/
[oracle@alfred-db 23.26.4]$ $ORACLE_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.55
OPatch succeeded.
03 | 应用 RU 补丁
按 readme 文件操作,核心步骤如下:
bash
unzip p40007731_230000_Linux-x86-64.zip
cd 40007731
$ORACLE_HOME/OPatch/opatch prereq CheckMinimumOPatchVersion -ph ./
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/media/23.26.4/40007731
在维护窗口内、确认业务已通知且数据库有可用备份后再执行;若 shutdown immediate 长时间未完成,先排查活动会话再决定是否强制关闭。关闭监听和数据库:
bash
lsnrctl stop
sqlplus / as sysdba
SQL> shutdown immediate
应用补丁:
bash
$ORACLE_HOME/OPatch/opatch apply
关键成功标志如下:
bash
---
Patch 40007731 successfully applied.
Sub-set patch [39093711] has become inactive due to the application of a super-set patch [40007731].
Please refer to Doc ID 2161861.1 for any possible further required actions.
***** There are 2 inactive RU patches in chain 1
***** 1 inactive patches will be deleted
Log file location: /opt/oracle/product/26ai/dbhome_1/cfgtoollogs/opatch/opatch2026-11-09_17-02-47PM_1.log
OPatch succeeded.
04 | 执行 datapatch
readme 中说明,补丁打完后还需要启动数据库并执行 datapatch:
sql
$ sqlplus /nolog
SQL> Connect / as sysdba
SQL> startup
SQL> alter pluggable database all open;
SQL> quit
$ cd $ORACLE_HOME/OPatch
$ ./datapatch -sanity_checks # 可选,用于执行前检查
$ ./datapatch -verbose
执行前可先用 opatch lspatches 确认补丁已应用;datapatch 耗时可能较长,请耐心等待。若出现错误,应先查看 sqlpatch 日志并处理,不要直接启动监听对外提供服务。确认最终成功标识:
bash
Installing patches...
Patch installation complete. Total patches installed: 3
Validating logfiles...done
Patch 40007731 apply (pdb CDB$ROOT): SUCCESS
Patch 40007731 apply (pdb PDB$SEED): SUCCESS
Patch 40007731 apply (pdb ORCLPDB1): SUCCESS
SQL Patching tool complete on Mon Nov 9 17:20:06 2026
05 | 收尾与验证
对可能存在的无效对象重新编译:
bash
$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -n 1 -e -b utlrp -d $ORACLE_HOME/rdbms/admin utlrp.sql
此时可以启动监听提供服务。笔者遇到一个小插曲:sqlnet.ora 文件被人修改过,格式有问题(多了一些换行符),导致监听无法启动,修正格式后即正常:
bash
$ lsnrctl start
随后通过查询数据库版本、检查组件状态并进行应用连接测试,确认服务正常。
关注我,和AI一起成长~