本文档用于Windows.X64系统的Oracle单实例19.3补丁升级至19.22版本的验证。
补丁应用前操作
tar -czvf D:\app\oracle\product\19.3.0\db_home.tar.gz D:\app\oracle\product\19.3.0\db_home

–补丁应用前操作
icacls D:\app\oracle\product\19.3.0\db_home /save D:\app\oracle\product\19.3.0\dir_backup.txt /T

(测试环境中此步骤可跳过)
–应用补丁前操作
周四晚上进行全量备份,实施当天22:00开始进行增量备份
select banner_full from v$version;
select version,version_full from v$instance;
select * from product_component_version;
–备份ORACLE_HOME/OPatch
将ORACLE_HOME/OPatch目录中的文件全部复制到ORACLE_HOME/OPatch_bak中
--解压opatch到ORACLE_HOME目录后
--查看opatch版本
opatch version

–补丁冲突检测
–将补丁包解压到ORACLE_HOME目录下后执行
cd 35962832
opatch prereq CheckConflictAgainstOHWithDetail -ph ./

set ORACLE_HOME=D:\app\oracle\product\19.3.0\db_home
set PATH=%ORACLE_HOME%\perl\bin;%PATH%
set PERL5LIB=
4.2.1 关闭数据库和监听
shu immediate
lsnrctl stop

4.2.2 关闭服务中与oracle相关的服务

4.2.3 关闭显式停止分布式事务处理协调器服务
net stop msdtc

cd 35962832
opatch apply

–查看补丁安装结果
opatch lsinventory

4.4.1 打开Oracle服务

4.4.2 将修改后的 SQL 文件加载到数据库中
cd %oracle_home%/opatch
datapatch -verbose

4.4.3 编译无效对象
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql

– 关闭services.msc中oracle的服务后执行
opatch rollback -id 35962832
opatch lsinventory

在进行补丁回滚时报错:

查看日志文件是因为正在运行的文件或可执行文件阻止了 opatch 的正常执行,检查后发现回滚前没有关闭oracle相关的服务。

关闭services.msc中的服务后再执行opatch rollback -id 35962832此时回滚成功。
