别人还在入门,你已经精通!Oracle补丁全栈攻略
1.为什么需要打补丁?
为Oracle数据库打补丁是DBA日常运维中最核心的工作之一,其主要目的包括:
安全性(Security):修复安全漏洞,防止数据泄露和恶意攻击。
稳定性(Stability):修复已知的功能性BUG(缺陷),避免系统崩溃、数据损坏或性能下降。
合规性(Compliance):满足行业法规(如等保、GDPR)对系统安全性的强制要求。
忽略补丁管理等同于让数据库在“裸奔”,其风险极高。
2.补丁分类介绍
以下是各类补丁的详细说明:
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。
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打补丁
3.2 11G PSU打补丁
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.建议及总结
给企业的最终建议:
若数据库版本为 19c,请采用 RU 作为标准的季度更新策略。
切勿忽视OJVM补丁,否则安全更新不完整。
严格遵循“测试先行、备份先行” 的原则,严禁未经测试直接在生产环境应用补丁。