当前位置 博文首页 > LuciferLiu_DBA:Oracle Patch补丁体系

    LuciferLiu_DBA:Oracle Patch补丁体系

    作者:[db:作者] 时间:2021-06-16 18:16

    Oracle作为大型商业关系型数据库, 从其补丁体系就可以看出其考虑的全面性. 首先我们看下oracle Patch的主要类型:

    Version/维护版本

      针对前一个维护版本的所有补丁进行整理, 增加新的功能或对软件有较大的改动, 进行整体测试, 得到一个软件版本“包”, 称为版本Vension. 比如11.2.

    One-Off pathch (例如 a bug fix)

      One-off patches也称为一次性补丁, 通常针对特定的版本数据库或运行平台. 此类补丁通常较小, 使用的最为频繁. One-off patch只需要用Opatch工具apply即可, 不需要升级/修正数据字典. 如在数据库使用过程中出现某些异常后如较常见的ORA-00600、ORA-07445错误等可以通过一次性补丁来搞定.

    Critical Patch Update(CPU)

      一般来说CPU包含了Oracle产品安全漏洞的修复补丁集(set of security bug fix), 通常一年发布四期, 一般是每季度提供一次的一组高优先级修复程序(往往针对安全性问题), 对于以前的安全性修复程序而言, 这些CPU是累积的, 只需要安装最近最后一个就可以, 它就包含了之前的所有CPU补丁, 但也可包含其他修复程序, 目的是解决与非安全性补丁之前的补丁冲突问题(即降低合并请求的必要性). 该类patch的安装和安装one-off patch一样, 同样使用“optach apply“命令来完成. 安装完成后应针对既有的数据库(已经创建在使用的数据库). 应在数据库级别运行数据字典升级脚本.

    Bundled patches(For Windows and Exadata only)

      用于解决在WIndows平台无法利用替换共享文件后relink的方式来更新oracle binary, 所以oracle特别针对windows发布区别与Uninx上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和rollbank. 一个PSU可视作一个个补丁,安装和删除操作同样简便.

      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, 第2个针对11.1.0.7的PSU版本号就是11.1.0.7.2.

    升级PSU的注意事项

    1、下载PSU补丁时, 首先确认操作系统版本以及数据库版本, 之后下载相应的psu补丁集.

    2、安装任何补丁时,一定要仔细阅读补丁对应的readme文件, 因为每个补丁的安装步骤可能有所不同.

    3、在grid infratruncture patch set update(简称: GI PSU)中包含了DB PSU, 所以只要下载并按照GI PSU的readme安装补丁, 并使用patch auto就可以把GI和数据库的PSU都安装上. 而且使用opatch auto的好处是完全自动化, 不需要手工停止/启动GI. 安装完成后,在GI和DB的oracle_home会分别安装了GI和DB的PSU, 也就是每个oracle_home下都有两个PSU, 一个是GI的, 一个是DB的. 推荐这种安装方法, 因为有的bug需要在GI中修复, 又需要在DB中修复.

    4、如果在数据库(RDBMS)的oracle_home下没创建任何的数据库, 也就是ocr中找不到oracle_home下的数据库, 那么opatch auto并不会把PSU安装在oracle_home下, 只会把PSU安装在GI的oracle_home下,这种情况下, 如果要对数据库的oracle_home安装psu, 需另外执行#opatch auto unzip补丁源文件 -oh <RAC_HOME>, 详见mos文档.

    5、安装psu的过程是滚动的(rolling), 也就是现有一台节点按照readme中步骤安装这个psu, 当这台执行完毕, 所有的资源启动后, 依次在其他节点执行. opatch auto不能在多个节点同时执行.?

    6、保证optach的版本高于readme中要求的版本, 否则请下载最新的opatch.

    7、oracle database psu 、bundle patch 的命名规则一般是按照推出的先后顺序,比如在2015年10月 推出的11.2.0.4的第8个db psu 就命名为:db psu 11.2.0.4.8 ;2016年1月份推出了对psu 、spu 、 bundle patch 新的命名规则。新的命名规则以11.2.0.4为例:11.2.0.4 YYMMDD 此处的YYMMDD为patch发布的具体日期。


    总结:

    1、要了解Oracle Patch补丁体系中, 各种类型补丁的关系、适用范围, 这样才能在需要打补丁的时候选择正确的补丁并完成安装步骤了,.

    2、某些补丁要求最低的Opatch版本, OPatch的升级仅需要下载对应操作系统版本的OPatch压缩包, 直接压缩至$ORACLE_HOME即可,以防万一可以备份之前的OPatch.

    3、OPatch有一系列的命令参数, 可以帮助继续了解, 例如有些补丁可以不用停机, 在线打使用online参数.?