Linux下Oracle补丁更新全流程
一 准备与规划
二 标准操作步骤
$ORACLE_HOME/OPatch/opatch version确认版本满足README要求。opatch lsinventory核对现有补丁;必要时用补丁目录中的冲突检查工具或按README执行预检,确保与现有One-off无冲突。cd $GRID_HOME/crs/install; ./rootcrs.sh -prepatch,完成后会解锁GI home。<DB_HOME>/rdbms/install/预补丁脚本(如prepatch.sh) -dbhome $ORACLE_HOME(不同版本脚本名可能不同,以README为准)。opatchauto并行/滚动应用(示例:/u01/app/19.3.0/grid/OPatch/opatchauto apply <补丁目录> -oh <GI_HOME>;DB Home同理)。opatch apply -oh <ORACLE_HOME> -local <补丁目录>;如使用-local逐个HOME打,避免跨HOME干扰。cd $GRID_HOME/crs/install; ./rootcrs.sh -postpatch完成集群后处理并启动CRS。<DB_HOME>/rdbms/install/后补丁脚本(如postpatch.sh) -dbhome $ORACLE_HOME;使用srvctl或SQL*Plus启动实例。cd $ORACLE_HOME/OPatch; ./datapatch -verbose加载数据库SQL修复(RU通常包含SQL补丁)。opatch lsinventory核对补丁号;查询v$version、dba_registry_sqlpatch确认RU/SQL补丁生效。三 常见场景命令示例
cd /u01/app/19.3/grid/crs/install; ./rootcrs.sh -prepatch/u01/app/19.3/grid/OPatch/opatchauto apply /home/grid/1915/33803476 -oh /u01/app/19.3/grid/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_1cd /u01/app/19.3/grid/crs/install; ./rootcrs.sh -postpatch$ORACLE_HOME/OPatch/datapatch -verbose$ORACLE_HOME/OPatch/opatch apply -oh $ORACLE_HOME -local /home/oracle/1915/33803476<DB_HOME>/rdbms/install/prepatch.sh -dbhome $ORACLE_HOME / postpatch.sh -dbhome $ORACLE_HOME$ORACLE_HOME/OPatch/datapatch -verbosecd $GRID_HOME; ./gridSetup.sh -applyRU <RU目录> -applyOneOffs "<One-off目录1>,<目录2>"cd $ORACLE_HOME; ./runInstaller -applyRU <RU目录> -applyOneOffs "<One-off目录1>,<目录2>"四 回退与验证
opatch rollback -id <补丁号> -oh <ORACLE_HOME>;RAC场景按README在所有节点执行相同回退;回退后运行datapatch -verbose回退SQL层修复。opatch lsinventory | grep <补丁号>;$ORACLE_HOME/OPatch/opatch lspatchescrsctl stat res -t、cluvfy stage -post patchselect * from v$version;、select patch_id, version, status, action, action_time from dba_registry_sqlpatch order by action_time desc;。五 注意事项与最佳实践
opatch lsinventory核对现有补丁,执行冲突检查,避免One-off互相覆盖。opatch与rootcrs.sh日志,准备回退方案。