Linux系统上Oracle12C Release 2 (12.2)打补丁
本文的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
Opatch(12.2.0.1.28)从此处下载,下载格式为7Z,请下载后自己压缩成zip格式
#切换到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查看当前版本
/ora01/app/oracle/product/12.2.0/db_1/OPatch/opatch -help
三、打补丁
1、关闭当前ORACLE_HOME下的所有实例和监听
#登录数据库
sqlplus / as sysdba
#关闭数据库实例
SQL> shutdown immediate
#关闭监听
lsnrctl stop
2、检测补丁冲突
Oracle数据库 12.2.0.1 从 2022 年 4 月 1 日起处于持续模式,从 2022 年 4 月开始发布的季度补丁包是受密码保护的,仅适用于有季度更新例外批准的客户。p33587128_122010_Linux-x86-64是能下载到的22 年 1 月份的补丁,可以从此处下载,压缩格式为7Z,下载后自己压缩成zip格式
#将下载好的补丁上传到服务器(任意目录即可),然后解压
#p33587128_122010_Linux-x86-64为RU补丁
unzip p33587128_122010_Linux-x86-64.zip
#将目录权限修改为oracle组
chown oracle:oinstall -R 33587128/
#进入到目录
cd 33587128
#执行冲突检测
/ora01/app/oracle/product/12.2.0/db_1/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph ./
3、升级
#切换到oracle用户
su - oracle
#进入到补丁所在目录
cd 33587128
#执行命令,出现要选择的一路按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