温馨提示×

Linux中Oracle如何更新补丁

小樊
43
2025-12-26 08:08:01
栏目: 云计算

Linux下Oracle补丁更新全流程

一 准备与规划

  • 明确补丁类型:优先选择季度 Release Update(RU);如需修复特定缺陷使用One-off;集群/存储组件关注OCW、ACFS、Tomcat、DBWLM等组件补丁。RU通常覆盖数据库主目录,部分组件需同时在Grid HomeOracle Home应用。以19c为例,RU如19.15.0.0.220419,组件RU如33806152(DB RU)/33815596(OCW RU)/33815607(ACFS RU)/33911149(Tomcat)/33575402(DBWLM)。务必阅读补丁README确认适用性与顺序。
  • 获取补丁与工具:通过My Oracle Support(MOS)下载对应平台与版本的RU/One-off;OPatch工具补丁号为6880880,需先升级OPatch至README要求版本。下载后校验SHA-256/MD5确保完整。
  • 环境准备:在测试环境完成演练;生产环境建议先更新Data Guard备库再主库;RAC采用滚动打补丁减少停机;变更前做好全量备份与回退预案。

二 标准操作步骤

  • 升级OPatch:在每个目标ORACLE_HOME(含Grid HomeDB Home)备份并替换OPatch目录,执行$ORACLE_HOME/OPatch/opatch version确认版本满足README要求。
  • 检查冲突与适用性:使用opatch lsinventory核对现有补丁;必要时用补丁目录中的冲突检查工具或按README执行预检,确保与现有One-off无冲突。
  • 关闭与预检查
    • RAC/Restart:以root在节点执行GI预补丁脚本:cd $GRID_HOME/crs/install; ./rootcrs.sh -prepatch,完成后会解锁GI home。
    • SI(单机):以oracle在DB home执行预补丁脚本:<DB_HOME>/rdbms/install/预补丁脚本(如prepatch.sh) -dbhome $ORACLE_HOME(不同版本脚本名可能不同,以README为准)。
  • 应用补丁
    • RAC/Restart:使用opatchauto并行/滚动应用(示例:/u01/app/19.3.0/grid/OPatch/opatchauto apply <补丁目录> -oh <GI_HOME>;DB Home同理)。
    • SI(单机):在对应HOME执行opatch apply -oh <ORACLE_HOME> -local <补丁目录>;如使用-local逐个HOME打,避免跨HOME干扰。
  • 后处理与启动
    • RAC/Restart:root执行cd $GRID_HOME/crs/install; ./rootcrs.sh -postpatch完成集群后处理并启动CRS。
    • SI(单机):执行<DB_HOME>/rdbms/install/后补丁脚本(如postpatch.sh) -dbhome $ORACLE_HOME;使用srvctl或SQL*Plus启动实例。
  • 数据库层面SQL补丁:完成二进制补丁后,执行cd $ORACLE_HOME/OPatch; ./datapatch -verbose加载数据库SQL修复(RU通常包含SQL补丁)。
  • 验证:在各HOME执行opatch lsinventory核对补丁号;查询v$versiondba_registry_sqlpatch确认RU/SQL补丁生效。

三 常见场景命令示例

  • 19c RAC 滚动更新RU(示例组件)
    • 节点预补丁(root):cd /u01/app/19.3/grid/crs/install; ./rootcrs.sh -prepatch
    • GI Home:/u01/app/19.3/grid/OPatch/opatchauto apply /home/grid/1915/33803476 -oh /u01/app/19.3/grid
    • DB Home:/u01/app/oracle/product/19.3.0/db_1/OPatch/opatchauto apply /home/oracle/1915/33803476 -oh /u01/app/oracle/product/19.3.0/db_1
    • 节点后补丁(root):cd /u01/app/19.3/grid/crs/install; ./rootcrs.sh -postpatch
    • 数据库SQL补丁:$ORACLE_HOME/OPatch/datapatch -verbose
  • 19c SI 单机更新RU
    • DB Home:$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /home/oracle/1915/33803476
    • 预/后补丁脚本(按README执行,如存在):<DB_HOME>/rdbms/install/prepatch.sh -dbhome $ORACLE_HOME / postpatch.sh -dbhome $ORACLE_HOME
    • SQL补丁:$ORACLE_HOME/OPatch/datapatch -verbose
  • 18c及以上 安装前打RU/One-off(GI/DB)
    • GI:cd $GRID_HOME; ./gridSetup.sh -applyRU <RU目录> -applyOneOffs "<One-off目录1>,<目录2>"
    • DB:cd $ORACLE_HOME; ./runInstaller -applyRU <RU目录> -applyOneOffs "<One-off目录1>,<目录2>"

四 回退与验证

  • 回退:在对应HOME执行opatch rollback -id <补丁号> -oh <ORACLE_HOME>;RAC场景按README在所有节点执行相同回退;回退后运行datapatch -verbose回退SQL层修复。
  • 验证要点
    • 二进制层:opatch lsinventory | grep <补丁号>$ORACLE_HOME/OPatch/opatch lspatches
    • 集群层(RAC):crsctl stat res -tcluvfy stage -post patch
    • 数据库层:select * from v$version;select patch_id, version, status, action, action_time from dba_registry_sqlpatch order by action_time desc;

五 注意事项与最佳实践

  • 变更窗口与顺序:遵循备库优先、RAC滚动;GI与DB的组件RU可能不同,严格按README的组件顺序与**目标类型(GI/DB)**执行。
  • 兼容性检查:应用前用opatch lsinventory核对现有补丁,执行冲突检查,避免One-off互相覆盖。
  • 工具与脚本:确保OPatch版本满足要求;RAC务必执行rootcrs.sh -prepatch/-postpatch;DB按需执行prepatch.sh/postpatch.sh
  • 校验与回退:打补丁后立即进行SQL补丁功能/回归测试;保留opatchrootcrs.sh日志,准备回退方案
  • 安全与合规:下载补丁与工具使用MOS账号;校验SHA-256/MD5确保介质完整;生产变更遵循变更管理流程。

0