Linux中Oracle如何更新补丁
导读:Linux下Oracle补丁更新全流程 一 准备与规划 明确补丁类型:优先选择季度 Release Update(RU);如需修复特定缺陷使用One-off;集群/存储组件关注OCW、ACFS、Tomcat、DBWLM等组件补丁。RU通常...
Linux下Oracle补丁更新全流程
一 准备与规划
- 明确补丁类型:优先选择季度 Release Update(RU);如需修复特定缺陷使用One-off;集群/存储组件关注OCW、ACFS、Tomcat、DBWLM等组件补丁。RU通常覆盖数据库主目录,部分组件需同时在Grid Home与Oracle 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 Home与DB 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:以root在节点执行GI预补丁脚本:
- 应用补丁
- 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:使用
- 后处理与启动
- 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启动实例。
- RAC/Restart:root执行
- 数据库层面SQL补丁:完成二进制补丁后,执行
cd $ORACLE_HOME/OPatch; ./datapatch -verbose加载数据库SQL修复(RU通常包含SQL补丁)。 - 验证:在各HOME执行
opatch lsinventory核对补丁号;查询v$version、dba_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
- 节点预补丁(root):
- 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
- DB Home:
- 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> "
- GI:
四 回退与验证
- 回退:在对应HOME执行
opatch rollback -id < 补丁号> -oh < ORACLE_HOME>;RAC场景按README在所有节点执行相同回退;回退后运行datapatch -verbose回退SQL层修复。 - 验证要点
- 二进制层:
opatch lsinventory | grep < 补丁号>;$ORACLE_HOME/OPatch/opatch lspatches - 集群层(RAC):
crsctl stat res -t、cluvfy 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补丁与功能/回归测试;保留
opatch与rootcrs.sh日志,准备回退方案。 - 安全与合规:下载补丁与工具使用MOS账号;校验SHA-256/MD5确保介质完整;生产变更遵循变更管理流程。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux中Oracle如何更新补丁
本文地址: https://pptw.com/jishu/782173.html
