Oracle Patch RU 详细操作
Oracle Patch RU 详细操作
适用版本:Oracle Database 19c 文档版本:v1.0 / 2026-07
1. 概述
Oracle 19c 采用 RU(Release Update)模型[1]:
类型:
- RU(Release Update)
- RUR(Release Update Revision)
- One-off patches
详细见:Oracle 补丁应用与 PSU。
2. RU 模型
2.1 季度发布
- 1月、4月、7月、10月
- 每季度
- 包含 bug 修复 + 安全
2.2 命名
19.19.0.0.230418
- 19:版本
- 19:RU 序号
- 230418:2023-04-18
3. 准备
3.1 下载
- My Oracle Support
- Patch 6880880:OPatch 最新
- Patch XXXXX:RU
3.2 备份
- ORACLE_HOME 备份
- 数据库全备份
- Opatch 备份
3.3 检查
$ORACLE_HOME/OPatch/opatch version
$ORACLE_HOME/OPatch/opatch lsinventory
4. OPatch 升级
4.1 下载
Patch 6880880
4.2 升级
cd $ORACLE_HOME
mv OPatch OPatch.old
unzip /tmp/p6880880_190000_Linux-x86-64.zip -d $ORACLE_HOME
./OPatch/opatch version
5. 单实例应用 RU
5.1 停数据库
sqlplus / as sysdba
SHUTDOWN IMMEDIATE;
EXIT
# 停监听
lsnrctl stop
5.2 应用 RU
cd $ORACLE_HOME
unzip /tmp/p34765931_190000_Linux-x86-64.zip -d /tmp
$ORACLE_HOME/OPatch/opatch apply -silent /tmp/34765931
5.3 root
# 部分 RU 需要 root
su -
$ORACLE_HOME/OPatch/opatch apply -silent /tmp/34765931
5.4 数据字典
sqlplus / as sysdba
STARTUP UPGRADE;
EXIT
cd $ORACLE_HOME/OPatch
./datapatch -verbose
5.5 验证
sqlplus / as sysdba
SELECT version, status FROM dba_registry;
SELECT patch_id, status FROM dba_registry_sqlpatch;
EXIT
$ORACLE_HOME/OPatch/opatch lsinventory
6. RAC 应用 RU
6.1 滚动
- 节点 1:停 → 升级 → 启
- 节点 2:停 → 升级 → 启
- 业务零停
6.2 节点 1
# 停实例
srvctl stop instance -db orcl -node rac1
# GI 软件升级
cd $GI_HOME
$GI_HOME/OPatch/opatch apply /tmp/34765931 -oh $GI_HOME
# DB 软件升级
cd $ORACLE_HOME
$ORACLE_HOME/OPatch/opatch apply /tmp/34765931 -oh $ORACLE_HOME
# 启实例
srvctl start instance -db orcl -node rac1
6.3 节点 2
同上。
6.4 datapatch
sqlplus / as sysdba
ALTER SYSTEM SET cluster_database=false SCOPE=spfile;
srvctl stop db -db orcl
srvctl start instance -db orcl -node rac1 -o upgrade
cd $ORACLE_HOME/OPatch
./datapatch -verbose
ALTER SYSTEM SET cluster_database=true SCOPE=spfile;
srvctl stop db -db orcl
srvctl start db -db orcl
详细见:Oracle RAC 部署实战。
7. GI + DB
7.1 GI 升级
# root
cd $GI_HOME
$GI_HOME/OPatch/opatchauto apply /tmp/34765931 -oh $GI_HOME
7.2 DB 升级
cd $ORACLE_HOME
$ORACLE_HOME/OPatch/opatchauto apply /tmp/34765931 -oh $ORACLE_HOME
8. Out-of-Place
8.1 流程
1. 安装新 ORACLE_HOME(带最新 RU)
2. 升级
3. 切换
4. 删除旧 ORACLE_HOME
8.2 安装新 HOME
mkdir -p ******
chown oracle:oinstall /u01/app/oracle/product/19.0.0/dbhome_2
su - oracle
cd /u01/app/oracle/product/19.0.0/dbhome_2
unzip /tmp/LINUX.X64_193000_db_home.zip
./runInstaller -silent -responseFile /tmp/db_install.rsp \
-applyRU /tmp/34765931
8.3 切换
# 修改 oracle 用户环境变量
# ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_2
# 修改 /etc/oratab
orcl:/u01/app/oracle/product/19.0.0/dbhome_2:Y
# 重新启动
srvctl modify database -db orcl -oraclehome /u01/app/oracle/product/19.0.0/dbhome_2
srvctl stop database -db orcl
srvctl start database -db orcl
8.4 datapatch
cd $ORACLE_HOME/OPatch
./datapatch -verbose
8.5 删除旧
cd /u01/app/oracle/product/19.0.0/dbhome_1/deinstall
./deinstall -silent
9. 回滚
9.1 opatch rollback
$ORACLE_HOME/OPatch/opatch rollback -id 34765931
9.2 datapatch
cd $ORACLE_HOME/OPatch
./datapatch -verbose
10. 验证
10.1 软件
$ORACLE_HOME/OPatch/opatch lsinventory
$ORACLE_HOME/OPatch/opatch lsinventory -details
10.2 数据库
SELECT version, status FROM dba_registry;
SELECT patch_id, action, status, action_time
FROM dba_registry_sqlpatch
ORDER BY action_time DESC;
SELECT instance_name, version, status FROM v$instance;
11. 常见坑与排错
11.1 ORA-01092
- 升级后启动失败
- 查 alert log
- datapatch
11.2 OPatch 失败
- 备份 ORACLE_HOME
- opatch rollback
- 重试
11.3 datapatch 失败
SELECT * FROM dba_registry_sqlpatch WHERE status != 'SUCCESS';
-- 查日志
$ORACLE_BASE/cfgtoollogs/sqlpatch
11.4 Inventory 损坏
./runInstaller -silent -attachHome ORACLE_HOME=... ORACLE_HOME_NAME=...
12. 最佳实践
- OPatch 最新:基础
- 备份:应急
- 测试环境:先验证
- 业务低峰:应用
- 滚动 RAC:零停
- Out-of-Place:推荐
- datapatch:必执行
- 验证:完整
- 回滚方案:准备
- 文档化:流程
13. 参考资料
[1] Oracle Database 19c Release Updates https://support.oracle.com/