本文的oracle使用的是单实例环境
一、打补丁前环境准备
1、确保make, ar, ld,和 nm四个可执行命令在$PATH中
export PATH=$PATH:/bin
2、查看已装的Oracle的OPatch版本
#切换到oracle用户
su - oracle#进入到数据库的安装目录下的opatch目录
cd /ora01/app/oracle/product/12.2.0/db_1/OPatch#查看版本./opatch -help
Oracle Interim Patch Installer version 12.2.0.1.6
Copyright (c) 2024, Oracle Corporation. All rights reserved.
二、升级Opatch
#切换到root用户并解压已上传的opatch安装包
su - root
unzip p6880880_122010_Linux-x86-64.zip#更改解压出来的目录的权限
chown oracle:oinstall -R OPatch/#进入到数据库安装目录,并将这个目录备份
cd /ora01/app/oracle/product/12.2.0/db_1/
mv OPatch/ OPatch_bak/#将刚刚解压的目录复制或剪切过来
mv OPatch/ /ora01/app/oracle/product/12.2.0/db_1/
#此时opatch已经更新完成,可以进入opatch目录使用opatch -help查看当前版本
三、打补丁
1、单实例环境下,关闭当前ORACLE_HOME下的所有实例和监听
#登录数据库
sqlplus / as sysdba#关闭数据库实例
SQL> shutdown immediate#关闭监听
lsnrctl stop
开始安装补丁,进入到补丁所在目录
2、检测补丁冲突
#将下载好的补丁上传到服务器(任意目录即可),然后解压
#p26710464_122010_db_Linux-x86-64为RU补丁
unzip p26710464_122010_db_Linux-x86-64.zip#将目录权限修改为oracle组
chown oracle:oinstall -R 26710464/#进入到目录
cd 26710464#执行冲突检测
/ora01/app/oracle/product/12.2.0/db_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
3、升级
#切换到oracle用户
su - oracle#进入到补丁所在目录
cd 26710464#执行命令,出现要选择的一路按Y即可,期间备份文件会有点慢
/ora01/app/oracle/product/12.2.0/db_1/OPatch/opatch apply#如果出现Missing command :fuser的报错,安装fuser对应的包
yum install -y psmisc
安装完成后,将修改sql文件加载到数据库中,步骤如下:
注意:12C的补丁注册改成了用datapatch工具,而不是以前版本的 @$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply
如果在加载sql文件的时候出现errors,那么查看具体的报错信息,并按照编号在MOS找到对应的BUG,然后打上那个BUG的补丁,然后重新加载SQL即可
验证打好的补丁:
#查看已打的补丁(这里因为是新装的虚拟测试机,所以目前没有打任何补丁)
/ora01/app/oracle/product/12.2.0/db_1/OPatch/opatch lsinventory