运维管理18 分钟阅读
一文掌握 Oracle OPatch 实用技巧
大家好,这里是公众号 DBA学习之路,分享一些学习数据库路上的知识和经验。 @TOC目录 OPatch 是什么? 对于 Oracle DBAers 来说,这是常识(囧),但许多不太熟悉 Oracle 数据库的人会经常问我
2025年2月13日
oraclerac
DBA 实战课程
系统学习 Oracle DBA
- 2738+ 篇实战文章
- 1500+ 步骤截图
- 10 大核心模块
开通会员 ¥128/月起
查看完整课程在知识库中专注阅读,并随时返回相关工具与课程
大家好,这里是公众号 DBA学习之路,分享一些学习数据库路上的知识和经验。

本章目标:掌握本章核心知识点 前置要求:完成前序章节学习 预计时长:60 分钟
OPatch 是什么? 对于 Oracle DBAers 来说,这是常识(囧),但许多不太熟悉 Oracle 数据库的人会经常问我,为什么安装补丁时要上传一个以 p6880880 开头的 zip 文件?它到底有什么作用呢?
为此,我打算写一篇关于 OPatch 的文章科普一下,以后直接发就行!
OPatch 是 Oracle 提供的一个命令行工具,用于管理和应用补丁(Patch)到 Oracle 数据库、中间件(如 WebLogic)等 Oracle 产品。它是 Oracle 补丁管理流程的核心工具,帮助用户维护系统的稳定性、安全性和功能更新。
Oracle 数据库初始安装后,在 $ORACLE_HOME 目录下会包含一个 OPatch 文件夹,这个就是 OPatch 管理工具。
OPatch 的主要功能:
通常我们会将 OPatch 目录添加到 PATH 环境变量中,这样就不需要每次进入 $ORACLE_HOME/OPatch 目录来执行命令:
1## Windows2set PATH=%ORACLE_HOME%/OPatch:%PATH%3## Unix4export PATH=$ORACLE_HOME/OPatch:$PATH配置完成后,直接运行命令即可:
1[oraprod@rac01:~]$ opatch version2OPatch Version: 12.2.0.1.334OPatch succeeded.但是,当我们要安装某些补丁时,常会发现默认的 OPatch 版本并不能满足补丁 README 中对 OPatch 版本的要求:
1If you do not have OPatch 12c Release 12.2.0.1.43 or the latest version available for 12c Release 12.2.0.1.0,then download it from patch# 6880880 for 12.2.0.1.0 release.这时我们就需要更新 OPatch 工具。
OPatch 工具通常放在 $ORACLE_HOME/OPatch 目录下。
从 Oracle 支持网站(MOS)下载 OPatch:https://updates.oracle.com/download/6880880.html

根据数据库版本和操作系统平台选择合适的 OPatch 安装包,下载后的文件名通常为:p6880880_<version>_<platform>.zip,这就是我们文章开头所说的 p6880880 文件,这个文件实际上就是 OPatch 工具!
这里我整理了 2025.02 最新的 OPatch 包(适用于 Linux 和 Windows)分享给大家:

关注微信公众号:DBA学习之路,回复关键词:
OPatch即可获取!
在更新 OPatch 之前,建议先备份 $ORACLE_HOME 目录下旧版本的 OPatch:
1[oraprod@rac01:~]$ cd $ORACLE_HOME2[oraprod@rac01:~]$ mv OPatch OPatch.bkp每个补丁的 README 文件中都有具体的安装说明。我们将下载的 p6880880 安装包解压到 $ORACLE_HOME 目录下:
1unzip /soft/p6880880_<version>_<platform>.zip2opatch version那么,如何知道需要安装哪个版本的 OPatch?
其实很简单:根据你当前的数据库版本安装最新的 OPatch 就行!例如,如果你现在使用的是 19C 版本,且需要安装 19.25 的 RU 补丁,README 中提示需要更新 OPatch,那就直接下载最新版本的 OPatch 进行更新。
OPatch 发布的周期和 PSU/RU 补丁发布的周期基本一致。
我们可以通过 opatch -help 命令查看 OPatch 命令的所有可用选项:
1[oraprod@rac01:~]$ opatch -help2Oracle Interim Patch Installer version 12.2.0.1.453Copyright (c) 2025, Oracle Corporation. All rights reserved.456 Usage: opatch [ -help ] [ -report ] [ command ]78 command := apply9 compare10 lsinventory11 lspatches12 napply13 nrollback14 rollback15 query16 version 17 prereq18 util19 20 <global_arguments> := -help Displays the help message for the command.21 -report Print the actions without executing.2223 example:24 'opatch -help'25 'opatch -help -fmw'26 'opatch apply -help'27 'opatch compare -help'28 'opatch lsinventory -help'29 'opatch lspatches -help'30 'opatch napply -help'31 'opatch nrollback -help'32 'opatch rollback -help'33 'opatch prereq -help'34 'opatch util -help'353637OPatch succeeded.这里我列举一些日常使用中比较常用的命令:
1## 查看 opatch 版本2opatch version34## 查看已安装补丁5opatch lspatches67## 查看已安装补丁明细8opatch lsinventory9opatch lsinventory -all1011## 当前的补丁历史会自动包含在 Oracle Central Inventory 中,可以通过命令 "opatch lsinventory -detail" 来查看12opatch lsinventory -detail -oh $ORACLE_HOME1314## 安装补丁前检查15opatch prereq CheckConflictAgainstOHWithDetail -ph ./16opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <补丁解压目录>1718## 安装补丁19opatch apply20## 静默安装补丁,使用 OPatch 参数 -silent 以非交互模式运行,不需要输入 Y/N21opatch apply -silent2223## 回退补丁24opatch rollback -id <补丁编号>1、运行 OPatch 工具的前提条件是什么?
ld、make、ar 等能够正常工作。2、如何确认补丁是否已正确安装?
opatch inventory 检查 ,确认补丁是否已成功注册。如果补丁已在 inventory 中注册,命令结果将列出补丁号码。检查 OPatch 日志文件,查看是否有错误。如果没有发现问题,则说明补丁已成功安装。3、如何在不关闭数据库实例的情况下在线安装补丁?什么是在线补丁?
4、如何在静默模式下运行 OPatch?
我们可以使用 OPatch 参数 -silent 以非交互模式运行 opatch apply、napply、rollback 和 nrollback 命令。
opatch <option> -silent 执行以下操作:
5、$ORACLE_HOME/.patch_storage 目录的作用是什么?如果不小心被删除了怎么办?
$ORACLE_HOME/.patch_storage 目录中。$ORACLE_HOME/.patch_storage/patch ID/ 目录中。这些保存的文件称为回滚文件,它们是实现补丁回滚的关键。$ORACLE_HOME/.patch_storage/<patch-id_timestamp>/restore.sh 脚本随 OPatch 一起提供,用于移除安装补丁后对 inventory 所做的任何更改。因此,如果 $ORACLE_HOME/.patch_storage 被不小心删除,您需要从备份中恢复它,或者重新安装 Oracle Home。
6、如果 OPatch 在安装补丁过程中中断了,接下来会怎么处理?
make 失败,或在使用 ld 创建新可执行文件时设备空间不足等问题。所有这些情况都可以重新执行。
7、运行 OPatch 时遇到错误,提示 fuser 不可用,应该怎么办?
fuser 命令完成的,在大多数操作系统中,fuser 命令位于 /sbin 或 /usr/sbin 目录下,通常这些目录没有包含在用户的 PATH 变量中。解决方法是将 /sbin:/usr/sbin 添加到 PATH 变量中。
8、当在RAC(Real Application Clusters)中安装补丁时,是否可以以Rolling方式安装?如果可以,应该如安装?
对于 RAC(Real Application Clusters),补丁安装有两种方式:
<patch>/etc/config/inventory 的 <online_rac_installable>false</online_rac_installable> 中标记为 true。
关于 OPatch 管理工具就先介绍这么多了,够用!
