IT 邦德

别人还在入门,你已经精通!Oracle补丁全栈攻略

1.为什么需要打补丁?

为Oracle数据库打补丁是DBA日常运维中最核心的工作之一,其主要目的包括:

安全性(Security):修复安全漏洞,防止数据泄露和恶意攻击。

稳定性(Stability):修复已知的功能性BUG(缺陷),避免系统崩溃、数据损坏或性能下降。

合规性(Compliance):满足行业法规(如等保、GDPR)对系统安全性的强制要求。

忽略补丁管理等同于让数据库在“裸奔”,其风险极高。

2.补丁分类介绍

以下是各类补丁的详细说明:

Image

2.1 RU (Release Update)

介绍: 从 18c(12.2.0.2) 开始引入的新补丁模式,取代了之前的PSU/SPU模式。RU是19c及以后版本的标准补丁策略。

内容: 综合性补丁。每个季度发布一次,包含:大量的功能性BUG修复(稳定性),安全漏洞修复(安全性),性能优化

特点:版本号会变化(例如从19.20.0.0升级到19.21.0.0),是累积性的,下一个RU包含之前所有RU的内容。

适用场景: 所有19c及以后版本的生产环境推荐策略。

2.2 RUR (Release Update Revision)

介绍: 与RU配套发布,是针对上一个RU的修订补丁。

内容: 仅包含安全修复和少量高优先级的稳定性修复。不会引入新的功能性BUG修复。

特点:版本号不变(例如,在19.21.0.0的基础上应用RUR,版本号仍是19.21.0.0),同样是累积性的。

适用场景: 希望获得关键安全修复但不想进行功能性变更的稳定生产环境。通常推荐直接应用最新的RU。

  1. PSU (Patch Set Update) - 补丁集更新 介绍: 主要适用于11g和12.1版本的综合性季度补丁,在12.2及以后版本中已被RU取代。

内容: 包含大量的BUG修复和安全补丁(SPU)。

特点:是累积性的,版本号不变(例如,12.1.0.2.v10)。

注意: 对于19c,Oracle强烈建议使用RU而不是PSU。

2.4 PU (CPU)

介绍: SPU (Security Patch Update),在早期也称为 CPU (Critical Patch Update)。这是纯粹的安全补丁,每个季度发布一次。

内容: 仅修复安全漏洞,不包含功能性BUG修复。

特点:是累积性的,通常体积较小。

现状: 在12.2及以后版本中,SPU已被整合到RU/RUR中,不再单独发布。

2.5 Bundle Patches

介绍: 针对特定产品或平台(如Exadata, Windows, OJVM)发布的补丁集合。

发布周期: 通常为月度或季度,频率高于RU/PSU。

内容: 包含针对该特定产品或平台的高优先级BUG修复和安全修复。

常见类型:

Database Bundle Patch: 用于Windows系统的数据库补丁。

Exadata Bundle Patch: 专为Exadata一体机发布。

OJVM Bundle Patch: 专门修复JVM相关漏洞的补丁(非常重要!)

2.6 OJVM 相关补丁

介绍: 这是独立于数据库主程序的补丁,用于修复Java虚拟机(OJVM)组件中的安全漏洞。

重要性: 应用PSU/RU后,数据库的OJVM组件并不会自动更新。如果忽略OJVM补丁,数据库仍然存在严重的安全漏洞。Oracle通常会同时发布:

OJVM Update / Bundle Patch

组合补丁(Combination Patch): 例如 19.21.0.0.220418 + OJVM 19.21.0.0.220418,两者版本号必须匹配。

应用顺序: 先应用数据库RU/PSU,再应用对应版本的OJVM补丁.

3.最佳实践

3.1 19C RU打补丁

Image

3.2 11G PSU打补丁

Image

3.3 DST时区打补丁

1.查看当前时区版本:
SELECT * FROM v$timezone_file;
确认目标库的 VERSION 字段值为 38,源库为 43

Oracle Data Pump 要求目标库的时区版本不低于源库。若目标库版本较低,需升级其 TSTZ 版本至 v43 或更高。


2.查找补丁
目标数据库版本为 Oracle 19c,需下载支持DSTv43 的补丁,Doc ID 412160.1

3.应用补丁
3.1 关闭数据库
SHUTDOWN IMMEDIATE;

3.2 安装补丁
su - oracle
unzip -d /home/oracle  /opt/p36260493_190000_Linux-x86-64.zip 
cd /home/oracle/36260493


安装前执行冲突检查:
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
正式应用
$ORACLE_HOME/OPatch/opatch apply

$ORACLE_HOME/OPatch/opatch lsinventory

验证安装:
startup数据库

cd$ORACLE_HOME/rdbms/admin/
SQL>@utltz_countstats.sql

4.建议及总结

给企业的最终建议:

Image

若数据库版本为 19c,请采用 RU 作为标准的季度更新策略。

切勿忽视OJVM补丁,否则安全更新不完整。

严格遵循“测试先行、备份先行” 的原则,严禁未经测试直接在生产环境应用补丁。