如何应用Exadata Bundle Patch

原文链接:http://www.dbaleet.org/how_to_apply_bundle_patch_on_exadata/

 

在Exadata中,数据库应用的补丁被称为Bundle Patch,简称BP (Windows上Oracle的补丁也是以BP形式发布的)。这一类型的补丁实际上是标准数据库的补丁,不包括任何Exadata特有的代码,也就是说它可以应用在Linuxx86_64平台的Oracle数据库之上。BP与标准Oracle数据库的PSU(patchset update)类似。例如BP也是累计的,最新的BP包含了之前BP的全部内容,但是同时又有其特殊性。

首先BP发布的周期较短,通常是一个月发布一次。这是因为通常情况下,Exadata并不建议打单独的one-off patch,主要是考虑到十分复杂的补丁冲突分析,以及由此带给支持后台的大量的补丁合并请求(Patch Merge Request)。

 

同时由于其发布的周期较短,必然会带来另外一个问题,那就是BP补丁测试可能不如PSU那么充分,甚至可能会出现有严重的问题而召回重新发布的情况发生。Exadata上决定放入BP补丁集中的补丁决定时间比较早,也就是说通常在正式发布大半个月之前补丁列表就已经冻结了,如果此后又发现新的问题,则会留到下一个版本去解决。

 

Oracle通常建议Exadata用户应用一种被称为QFSDP(Quarterly Full Stack Download Patch )的补丁,QFSDP每一个季度发布一次,属于大而全的补丁集,不仅仅包括BP,QFSDP中包括了所有Exadata需要的补丁:

 

以下以BP16为例,介绍对GI和RDBMS应用BP的流程:

下载对应的BP和Opatch工具并将其传到db01节点上
其中BP16的补丁号为16233552,opatch的补丁号为6880880。

1. 将opatch解压到$ORACLE_HOME下,将BP16解压到/tmp下:

unzip p6880880_112000_Linux-x86-64.zip -d /u01/app/11.2.0.3/grid

unzip p6880880_112000_Linux-x86-64.zip –d /u01/app/oracle/product/11.2.0.2/dbhome_1

mkdir /tmp/bp16

unzip p16233552_11203_Linux-x86-64.zip -d /tmp/bp16

 

2. 配置OCM

$ORACLE_HOME/OPatch/ocm/bin/emocmrsp

 

3. 分别使用grid和oracle用户检查一下OPatch 的版本是否正确:

$ORACLE_HOME/OPatch/opatch version

 

4. 分别使用grid和oracle用户检查一下当前patch 信息:

$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

 

5. 使用grid用户对检查GI补丁的兼容性:

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/bp16/16233552/16233552

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/bp16/16233552/16355082

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/bp16/16233552/16401300

 

6. 使用oracle用户对于RDBMS检查补丁的兼容性:

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/bp16/16233552/16233552

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /tmp/bp16/16233552/16355082/custom/server/16355082

 

7. 使用grid用户检查GI补丁的空间需求:

$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseDir /tmp/bp16/16233552/16233552

$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseDir /tmp/bp16/16233552/16355082

$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseDir /tmp/bp16/16233552/16401300

 

8. 使用oracle用户检查RDBMS补丁的空间需求:

$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseDir /tmp/bp16/16233552/16233552

$ORACLE_HOME/OPatch/opatch prereq CheckSystemSpace -phBaseDir /tmp/bp16/16233552/16355082/custom/server/16355082

 

9. 使用root用户采用opatch auto的方式应用BP:

#ORACLE_HOME/OPatch/opatch auto /tmp/bp16/16233552

 

10. 分别使用grid用户和oracle用户检查patch是否应用成功:

$ORACLE_HOME/OPatch/opatch lsinventory -detail -oh $ORACLE_HOME

 

11. 使用oracle用户在任意一个节点执行升级数据字典的脚本:

$sqlpllus "/as sysdba"
SQL> @rdbms/admin/catbundle.sql exa apply
SQL> quit

12. 查询组件信息确认数据字典已经升级:

SQL>select substr(comp_name,1,40) comp_name, status, substr (version,1,10) version from dba_registry order by comp_name;

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *