阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle Patch补丁体系和如何打补丁

164次阅读
没有评论

共计 3714 个字符,预计需要花费 10 分钟才能阅读完成。

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)

Oracle Patch 补丁体系和如何打补丁

选择操作系统版本进行下载,进入目录中执行 opatch apply,

Oracle Patch 补丁体系和如何打补丁
 

提示 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)

Oracle Patch 补丁体系和如何打补丁

解压缩,并复制至 $ORACLE_HOME 下,可以提前备份下旧版的 OPatch。再执行 OPatch version,
[oracle@emrep11 ~]$ /u01/app/oracle/11.2.0.4/dbhome_1/OPatch/opatch version
OPatch Version: 11.2.0.3.6
OPatch succeeded.
升级至 11.2.0.3.6。
3. 继续安装,

Oracle Patch 补丁体系和如何打补丁

 执行失败,从错误信息看,有下面三个可执行程序处于激活状态,
Following executables are active :
/u01/app/oracle/11.2.0.4/dbhome_1/bin/oracle
/u01/app/oracle/11.2.0.4/dbhome_1/lib/libclntsh.so.11.1
/u01/app/oracle/11.2.0.4/dbhome_1/lib/libsqlplus.so
需要停止这些激活的可执行程序,首先查找 sqlplus,

Oracle Patch 补丁体系和如何打补丁

 接下来需要关闭数据库,以确保 libclntsh.so.11.1 停止,

Oracle Patch 补丁体系和如何打补丁

 仍旧不行,说明仍有进程使用,尝试关闭监听,可参考这篇文章:《opatch error code 73: Prerequisite check“CheckActiveFilesAndExecutables”failed. (文档 ID 1942237.1)》

Oracle Patch 补丁体系和如何打补丁

 此时再次执行 opatch apply,

Oracle Patch 补丁体系和如何打补丁

4. 验证安装,

 Oracle Patch 补丁体系和如何打补丁

Oracle Patch 补丁体系和如何打补丁

Oracle Patch 补丁体系和如何打补丁

Oracle Patch 补丁体系和如何打补丁

可以看出已安装了相应的 patch。

总结:
1. 要了解 Oracle Patch 补丁体系中,各种类型补丁的关系、适用范围,这样才能在需要打补丁的时候选择正确的补丁并完成安装步骤了。
2. 某些补丁要求最低的 OPatch 版本,OPatch 的升级仅需要下载对应操作系统版本的 OPatch 压缩包,直接解压缩至 $ORACLE_HOME 即可,以防万一可以备份之前的 OPatch。
3.OPatch 有一系列的命令参数,可以查看帮助继续了解,例如有些补丁可以不用停机,在线打使用 online 参数。

参考文章:
参考 1:http://www.linuxidc.com/Linux/2016-11/137673.htm
参考 2:http://www.linuxidc.com/Linux/2016-11/137680.htm
参考 3:
Patch Set Updates for Oracle Products (文档 ID 854428.1)
参考 4:
opatch error code 73: Prerequisite check“CheckActiveFilesAndExecutables”failed. (文档 ID 1942237.1)
参考 5:
Quick Reference to Patch Numbers for Database PSU, SPU(CPU), Bundle Patches and Patchsets (文档 ID 1454618.1)

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-11/137681.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3714字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中