前 言
近期,由于 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、数据库环境
操作系统版本:suse11sp4
数据库版本 :
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版本,做如下操作。
- .上传p6880880_112000_Linux-x86-64_11.2.0.3.21.zip到/u01/app/soft目录下。
- .将grid 和oracle用户ORACLE_HOME目录下的原Opatch目录改名备份。
grid 用户:
mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bak0531
Oracle 用户:
mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_bak0531
- .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 lsinventor
-
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。
最后一点叮嘱,在生产环境中,升级过程中的变量因素是不可控制的,可以一个节点一个节点操作,保证生产环境高效稳定的运行,不过也需要做好备份哦,备份好相关的数据,就可以放心大胆的干了。好啦,今天就到这里了,最近有点忙,更新的频率有点低,望各位小伙伴们见谅了。
