前 言
近期,由于 Oracle 发布了第一季度的补丁程序包,而安全又被重视了很多,那么我们运维的数据库则需要打升级补丁,避免被扫描到漏洞。天天在打补丁,连做梦都是,这里总结分享一下,避免后人踩坑,需要的可仔细阅读实践。
Oracle CPU 的全称是 Crirical Patch Update,Oracle 对于其产品每个季度发行一次安全补丁包,通常是为了修复产品中的安全隐患。Oracle PSU 的全称是 Patch Set Update,Oracle 对于其产品每个季度发行一次补丁包,包含了 bug 的修复。 Oracle 选取被用户下载数量多且被验证过的具有较低风险的补丁放入每个季度的 PSU 中。在每个PSU 中不但包含 bug 的修复而且还包含了最新的 CPU。PSU 通常随着 CPU 一起发布。
一、 补丁下载及准备
通过 MOS 账号登陆到 My Oracle Support,进入到 补丁程序和更新程序 然后选择平台和补丁号或者 Bug 号 点击搜索,便可以去寻找自己想要找的程序包了。
选择到这个界面,也可以先进行补丁分析,在 下载 左边有个 使用 OPatch 进行分析按钮,可进行分析。
到这个界面直接下载就好了!
同理,29255947 补丁也可以按照上面方法下载,不过要是没有 MOS 账号的话,是无法登陆下载的,那么也不用担心,我这里已经下载好了,公众号【JiekeXu之路】后台回复【RAC补丁】即可获得安装包。
1、数据库环境
数据库版本:Oracle 11.2.0.4 x64 RAC Grid :11.2.0.4 Oracle database :11.2.0.4 目标版本:11.2.0.4.190416
复制
2、准备内容
GI PSU:p29255947_112040_Linux-x86-64.zip
Opatch: p6880880_112000_Linux-x86-64.zip
说明:为了区别以前的补丁包,这里将下载的程序包重命名为这个,以示区别。
p6880880_112000_Linux-x86-64.zip :p6880880_112000_Linux-x86-64_11.2.0.3.21.zip p29255947_112040_Linux-x86-64.zip:p29255947_112040_Linux-x86-64_11.2.0.4.190416.zip
复制
注意:需要Opatch版本在11.2.0.3.21及以上,升级前安装目录空闲空间必须有 30 G 以上,这两个条件必须同时满足才可成功。
检查环境是否为11.2.0.3.21 版本:
[root@JiekeXu01 ~]# su - oracle [root@JiekeXu01 ~]$ cd $ORACLE_HOME/OPatch [oracle@JiekeXu01 OPatch]$ ./opatch version OPatch Version: 11.2.0.3.18 OPatch succeeded.
复制
3、更新Opatch版本(如果版本符合则省略)
分别在各个节点上更新OPatch版本,做如下操作。
(1).上传p6880880_112000_Linux-x86-64_11.2.0.3.21.zip到/u01/app/soft目录下。
(2).将grid 和oracle用户ORACLE_HOME目录下的原Opatch目录改名备份。
grid 用户: mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bak0531 Oracle 用户: mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bak0531 (1).grid解压压缩包 -- $ORACLE_HOME: /u01/app/product/11.2.0/db -- $GRID_HOME : /u01/app/product/11.2.0/grid cd /u01/app/soft unzip p6880880_112000_Linux-x86-64_11.2.0.3.21.zip -d $GRID_HOME unzip p6880880_112000_Linux-x86-64_11.2.0.3.21.zip -d $ORACLE_HOME mv OPatch $ORACLE_HOME/ cd $ORACLE_HOME/OPatch
复制
检查更新后的opatch 版本
./opatch version [oracle@JiekeXu01 OPatch]$ ./opatch version OPatch Version: 11.2.0.3.21 OPatch succeeded.
复制
二.GI打补丁
1、检查inventory有效性:
Grid用户执行:
$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME
复制
2、生成ocm.rsp文件
root 用户执行:
cd /u01/app/product/11.2.0/grid/OPatch/ocm/bin ./emocmrsp
复制
(回车 yes两步操作)
3、解压patch压缩包并给grid权限
解压补丁包p29255947_112040_Linux-x86-64.zip
grid 用户:
cd /u01/app/soft unzip p29255947_112040_Linux-x86-64_11.2.0.4.190416.zip chown -R grid:oinstall 29255947 chmod -R 775 29255947
复制
4、执行命令打补丁
--root: #/u01/app/product/11.2.0.4/grid/OPatch/opatch auto /u01/app/soft/29255947 -oh /u01/app/product/11.2.0.4/grid -ocmrf /u01/app/product/11.2.0.4/grid/OPatch/ocm/bin/ocm.rsp
复制
注意:这里有个小插曲,在Linux 系统中这么执行是没有问题的,但是 AIX 中却会出错,则需要指定一下环境变量 export USER=grid 然后在执行上面的命令。
5、在其他节点也执行 2,3,4 步骤
生成ocm.rsp
解压 patch
root执行命令(AIX需要注意export)
#/u01/app/product/11.2.0.4/grid/OPatch/opatch auto /u01/app/soft/29255947 -oh /u01/app/product/11.2.0.4/grid -ocmrf /u01/app/product/11.2.0.4/grid/OPatch/ocm/bin/ocm.rsp
复制
6、检查GI打补丁情况
grid用户,两个节点分别打补丁
$ORACLE_HOME/OPatch/opatch lsinventory
复制
三.DB打补丁
1、root用户,两个节点分别打补丁
#/u01/app/product/11.2.0.4/db/OPatch/opatch auto /u01/app/soft/29255947 -oh /u01/app/product/11.2.0.4/db -ocmrf /u01/app/product/11.2.0.4/grid/OPatch/ocm/bin/ocm.rsp
复制
注意:和前面一样,在Linux 系统中这么执行是没有问题的,但是 AIX 中却会出错,则需要指定一下环境变量 export USER=oracle 然后在执行上面的命令。
2、Oracle用户更新数据库字典表信息:(其中一个节点执行即可)
cd $ORACLE_HOME/rdbms/admin sqlplus / as sysdba SQL>@catbundle.sql psu apply SQL> @utlrp.sql SQL> @dbmsjdev.sql SQL> exec dbms_java_dev.disable $ rman catalog username/password@alias RMAN> UPGRADE CATALOG;
复制
3、检查数据库版本
Oracle用户:
$ORACLE_HOME/OPatch/opatch lsinventory sqlplus / as sysdba col action_time for a32 col action for a10 col namespace for a10 col version for a10 col BUNDLE_SERIES for a10 col comments for a30 set lin 300 select * from dba_registry_history; ACTION_TIME ACTION NAMESPACE VERSION ID BUNDLE_SER COMMENTS -------------------------------- ---------- ---------- ---------- ---------- ---------- ------------------------------ *************************************省略内容******************************************* col ACTION_TIME for a35 col COMMENTS for a30 select ACTION_TIME,COMMENTS from registry$history; ACTION_TIME COMMENTS ------------------------------ ------------------------------ 24-AUG-13 12.03.45.119862 PM Patchset 11.2.0.2.0 19-JAN-16 12.10.26.734097 AM Patchset 11.2.0.2.0 26-JAN-19 10.45.57.188831 AM PSU 11.2.0.4.180116 26-JAN-19 11.52.32.664077 AM PSU 11.2.0.4.19041611.2.0.4.190416
复制
那么,按照这个步骤执行是没有问题的,基本上踩得坑已经说明了,切记目录、版本要满足要求,要是需要回退的话可以去看官方文档或者阅读 README.html。这里不做说明,感兴趣的朋友可自行阅读,若没有 MOS 账号的话,是无法登陆下载的,那么也不用担心,我这里已经下载好了,公众号【JiekeXu之路】后台回复【RAC补丁】即可获得安装包及 README.html。
最后一点叮嘱,在生产环境中,升级过程中的变量因素是不可控制的,可以一个节点一个节点操作,保证生产环境高效稳定的运行,不过也需要做好备份哦,备份好相关的数据,就可以放心大胆的干了。好啦,今天就到这里了,最近有点忙,更新的频率有点低,望各位小伙伴们见谅了。