本文档用于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此时回滚成功。