🔧 一、准备阶段
1. 备份关键数据
- 数据库备份:
使用RMAN执行全库备份:
rman target /
RMAN> backup database plus archivelog;

- 软件目录备份:
复制ORACLE_HOME(默认如C:\app\product\11.2.0\dbhome_1)到安全位置。
- OPatch备份:
重命名原OPatch目录(如OPatch → OPatch_bak)
2. 关闭所有Oracle服务
- 停止数据库实例:
sqlplus / as sysdba
SQL> shutdown immediate;

- 停止监听服务:
lsnrctl stop

- 在Windows服务管理器中关闭所有Oracle相关服务
(如OracleService<SID>、OracleOraDb11g_home1TNSListener)

3. 更新OPatch工具
解压p6880880_112000_MSWIN-x86-64.zip,将内容覆盖到$ORACLE_HOME\OPatch目录(替换旧文件)
- 验证OPatch版本:
cd %ORACLE_HOME%\OPatch
opatch version #应显示11.2.0.3.x或更高[3](@ref)

⚙️ 二、补丁安装步骤
1. 安装DB PSU补丁(db-p34474433)
- 解压
db-p34474433_112040_MSWIN-x86-64-202210.zip到临时目录(如C:\temp\34474433)。 - 执行补丁安装:
cd C:\temp\34474433
%ORACLE_HOME%\OPatch\opatch apply

提示确认时输入Y,邮箱提示直接回车跳过。

- 启动数据库并更新数据字典:
sqlplus / as sysdba
SQL> startup;
SQL> @?/rdbms/admin/catbundle.sql psu apply -- 执行约30~60分钟,勿中断[1,5](@ref)
SQL> quit;
2. 安装OJVM PSU补丁(ojvm-p34513867)
- 再次关闭数据库服务(重复准备阶段步骤2)。
- 解压
ojvm-p34513867_112040_MSWIN-x86-64-202210.zip到临时目录(如C:\temp\34513867)。 - 执行安装:
cd C:\temp\34513867
%ORACLE_HOME%\OPatch\opatch apply
输入Y确认操作。
- 执行OJVM后处理脚本:
sqlplus / as sysdba
SQL> shutdown immediate;
SQL> startup upgrade;
SQL> @?/rdbms/admin/postinstall.sql -- 路径可能不同,以补丁内README为准,找不到就在dbname下搜一下
SQL> shutdown;
SQL> startup;
SQL> @?/rdbms/admin/utlrp.sql -- 重新编译无效对象[2](@ref)
✅ 三、验证与收尾
1. 检查补丁状态
%ORACLE_HOME%\OPatch\opatch lsinventory #确认34474433和34513867在列表中
sqlplus / as sysdba
SQL> SELECT * FROM dba_registry_history; -- 检查PSU应用记录
2. 启动所有服务
重启数据库实例、监听器及Windows服务。
3. 关键注意事项
- 补丁冲突:
若安装时报冲突(如Conflict found),用opatch rollback -id <冲突补丁号>卸载旧补丁后重试。
- 环境变量:
若执行脚本报错(如“适配器错误”),检查PATH是否包含其他Oracle客户端路径并清理。
- 长时间操作:
catbundle.sql和postinstall.sql可能耗时较长,避免中断进程