Oracle作为大型商用关系型数据库,从其补丁体系就可以看出其考虑的全面性。首先我们看下Oracle Patch的主要类型[参考1和2]:
Version/维护版本
针对前一个维护版本的所有补丁进行整理,增加新的功能或对软件有较大的改动,进行整体测试,得到一个软件版本”包”,称为版本Version。比如 11.2。
One-off patches (e.g. a bug fix)
One-off patches也称之为一次性补丁,通常针对特定的版本数据库或运行平台。此类补丁通常较小,使用的最为频繁。One-off patch只需要用Opatch工具apply即可,不需要升级/修正数据字典。如在数据库使用过程中出现某些异常后如较常见的ORA-00600、ORA-07445错误等可以通过一次性补丁来搞定。
Critical Patch Update (CPU)
简称CPU,一般来说CPU包含了Oracle产品安全漏洞的修复补丁集(set of security bug fix),通常一年发布四期,一般是每季度提供一次的一组高优先级修复程序(往往针对安全性问题),对于以前的安全性修复程序而言,这些CPU是累积的,只需要安装最近最后一个就可以,它就包含了之前的所有CPU补丁,但也可包含其他修复程序,目的是解决与非安全性补丁之间的补丁冲突问题(即降低合并请求的必要性)。该类patch的安装和安装one-off patch一样,同样使用”opatch apply”命令来完成。安装完成后应针对既有的数据库(已经创建在使用的数据库),应在数据库级别运行数据字典升级脚本。
Bundled patches (For Windows and Exadata only)
用于解决在Windows平台无法利用替换共享库文件后relink的方式来更新Oracle binary,所以Oracle特别针对Windows发布区别于Unix上Normal/Molecular CPU的CPU Bundle patch。通常情况下,Bundle Patch会别较大,Windows bundle patches通常每一个季度都会发布。
PSR(Patch Set Release)/Patch Set Update(PSU)
PSR就是大家常见的大补丁合集,通常1GB左右,也就是oracle版布号的第四位即为PSR号。也就是说oracle版布号的第四位会被修改。每一个PSR是都整合了之前的一些bug,并且经过了严格的测试,通常更新PSR风险相对较小。10.2,10.2.0.1.0是基础发行版,至今已有五个PSR发布,最新10.2的PSR为10.2.0.5.0。
PSU就是在每个PSR发布之间的补丁,由于新旧PSR之间周期较长,而数据库在运行期间难以保证不会出现新的bug,因此有了PSU。PSU是对于PSR的一个重要补充,每个PSU修改5位版本号的第5位。如,11.1版本升级为11.1.0.7.1;10.2版本为10.2.0.4.2。PSU包含CPU,所以建议尽量安装PSU,PSU通常也是增量的,大部分PSU可以直接安装,但有些PSU则必须要求安装了上一 个版本的PSU之后才能继续安装,要仔细看各个PSU的Readme文档。PSU与CPU一样,定期发布,计划一年发布四次,发布日期与CPU发布日期相同。PSU同样使用Opatch工具安装/删除,命令仍是apply和rollback。一个PSU可视作一个个别补丁,安装和删除操作同样简便。
[参考3]PSU有三个优势,
(1) 低风险高价值,PSU包括:
Critical technical issues with fixes that may affect a large number of customers and that are already proven in the field
Critical Patch Update fixes
PSU不包括:
Changes that require re-certification (for example, Database fixes that cause optimizer plan changes)
Fixes that require configuration changes
每个PSU会限制包含bug fix的数量,一般在25到100个之间。会从用户下载量最多,以及发布的关键安全事件中选择出这些补丁。数据库PSU确保可以支持滚动RAC安装。
(2) PSU会通过严格的测试,保证各种fix可以正常运行,不会互相影响。
(3) Oracle版本号的第五位是作为每个PSU的增量版本号。例如初始PSU版本号是11.1.0.7.1,第二个针对11.1.0.7的PSU版本号就是11.1.0.7.2。
实验:
1.测试安装如下PSU,
Bug 24006111 - 11.2.0.4.161018 (Oct 2016) Database Patch Set Update (DB PSU) (文档 ID 24006111.8)
选择操作系统版本进行下载,进入目录中执行opatch apply,
提示patch安装需要OPatch的版本是11.2.0.3.5,使用OPatch version查看当前版本是11.2.0.3.4,所以第一步需要升级OPatch。
[oracle@emrep11 ~]$ /u01/app/oracle/11.2.0.4/dbhome_1/OPatch/opatch version
OPatch Version: 11.2.0.3.4
OPatch succeeded.
2.升级OPatch,
如下选择对应操作系统版本,下载OPatch,p17836989_112000_Linux-x86-64.zip,
补丁程序17836989: OPatch patch of version 11.2.0.3.5 for Oracle software releases 11.2.0.x (NOV 2013)