关于Oracle 的Patch安装,以前有整理过几篇文档,以下:html
Oracle 补丁体系 及opatch 工具 介绍sql
http://blog.csdn.net/tianlesoftware/article/details/5809526数据库
Oracle 11g 新特性 --Online Patching (Hot Patching 热补丁)说明oracle
http://blog.csdn.net/tianlesoftware/article/details/8214412app
http://blog.csdn.net/tianlesoftware/article/details/6857059spa
这里看一下RAC的Patch。 这里是争对DB Patch 来讲明,若是是RAC的GI升级,或者是PSR,仍是须要停机的。由于GI的升级须要停掉整个CRS。 但对数据库独立patch则能够采起滚动方式来安装。.net
RAC 环境下有三种不一样的patch方法:code
对于这种模式,OPatch 先在本地节点apply patch,而后在其余节点apply,最后更新inventory。 在这个patch的过程当中,全部实例都必须shutdown。xml
该模式的操做步骤以下:
(1)关闭全部节点上的实例。
(2)在全部节点上applypatch。
(3)启动全部实例。
在这种模式下,OPatch 先对本地节点打opatch。而后让用户选择其余的节点来进行patch, 其余节点也patch完成,最后在更新inventory。
在这种模式下,downtime的时间就是第二个节点关闭到第一个节点起来之间的时间。
最小宕机的操做步骤以下:
(1)关闭节点1的实例
(2)在节点1上apply Patch
(3)关闭节点2上的实例。
(4)在节点2上应用Patch。
(5)关闭节点3上的实例。
(6)在这个时候,节点1和节点2的实例能够启动。
(7)在节点3上应用patch。
(8)启动节点3上的实例。
以上整个过程,downtime就是节点3 shutdown到节点1,2启动这段时间。
在这种方法里,没有downtime 时间。 每一个节点均可以patch,而且其余节点也能够正常运行,这种状况下对系统就没有影响。
Rolling Patch 也不老是不须要downtime时间,由于有些patch支持 rolling patch,有些不支持,对于不支持rolling patch的,只能按照老方法来安装。
Rolling patch的步骤以下:
(1)关闭节点1的实例
(2)在节点1上应用Patch。
(3)在节点1上启动实例。
(4)关闭节点2上的实例。
(5)在节点2上应用Patch。
(6)在节点2上启动实例。
(7)关闭节点3上的实例。
(8)在节点3上应用Patch。
(9)启动节点3上的实例。
只有知足特定条件的Patch 才能够进行rolling patch。该类patch被称为:rolling updateble patch 或者 rolling patch。
若是用户指定了最小宕机时间,选择最小宕机时间,若是没有指定,就使用rolling patch,最后在考虑同时对全部节点进行patch。
当oracle 发布一个patch的时候,会对patch 进行标记:rolling 或者是not rolling。大部分的patch 都是rolling的。
Rolling Patch 有以下特性:
(1)Patch 不影响数据库的内容
(2)Patch 和RAC 内部通讯结构无关
(3)Patch 改变程序的逻辑,不修改kernel modules的common header definitions。包括客户端的patch,其只影响一些工具,如export,import,sql*plus和sql*loader等。
只有独立的patches才是rollable的。对于patch sets不能进行rolling patch。
将多个rolling patch 合并起来的merge patch 和普通的patch都不是 rolling patch。
从Oracle 9.2.0.4 开始,根据定义的规则,全部的的patches都会被标记为rolling 或者 not rolling patch。 在这以前的patch都会标记为not rolling。
- 9i or 10gR1: opatchquery -is_rolling
- 10gR2: opatch query -all [unzipped patchlocation] | grep rolling
- 10gR2 on Windows: opatch query -all [unzipped patchlocation] | findstr rolling
- Later 10gR2 or 11g: opatchquery -is_rolling_patch [unzipped patch location]
若是咱们解压缩的patch 路径包含多个子patch目录,那么opatch命令就不能正常工做。
--不能用root用户执行判断命令:
[root@rac1 16056266]#/u01/app/grid/11.2.0/OPatch/opatch query -is_rolling_patch/u01/software/16056266
The user is root. OPatch cannot continue ifthe user is root.
OPatch failed with error code 255
[root@rac1 16056266]# su - grid
[grid@rac1 ~]$/u01/app/grid/11.2.0/OPatch/opatch query -is_rolling_patch/u01/software/16056266
Oracle Interim Patch Installer version11.2.0.3.4
Copyright (c) 2012, OracleCorporation. All rights reserved.
Oracle Home : /u01/app/grid/11.2.0
Central Inventory : /u01/app/oraInventory
from :/u01/app/grid/11.2.0/oraInst.loc
OPatch version : 11.2.0.3.4
OUI version : 11.2.0.3.0
Log file location :/u01/app/grid/11.2.0/cfgtoollogs/opatch/opatch2013-06-09_04-14-34AM_1.log
Failed to load the patch object. Possible causes are:
Thespecified path is not an interim Patch shiphome
Meta-data files are missing from the patch area
Patch location = /u01/software/16056266
Details = Input metadata files are missing.
Patch Location"/u01/software/16056266" doesn't point to a valid patch area.
--由于咱们指定的/u01/software/16056266的路径下面还包含其余的子patch,因此报错。
OPatch failed with error code 75
[grid@rac1 ~]$ cd /u01/software/16056266
[grid@rac1 16056266]$ ls
13343438 13696216 13923374 14275605 14727310 16056266 patchmd.xml README.html README.txt
--对单个patch进行查看:
[grid@rac1 16056266]$ /u01/app/grid/11.2.0/OPatch/opatch query-is_rolling_patch /u01/software/16056266/13343438/
Oracle Interim Patch Installer version11.2.0.3.4
Copyright (c) 2012, OracleCorporation. All rights reserved.
Oracle Home : /u01/app/grid/11.2.0
Central Inventory : /u01/app/oraInventory
from :/u01/app/grid/11.2.0/oraInst.loc
OPatch version : 11.2.0.3.4
OUI version : 11.2.0.3.0
Log file location :/u01/app/grid/11.2.0/cfgtoollogs/opatch/opatch2013-06-09_04-15-17AM_1.log
--------------------------------------------------------------------------------
Patch is a rolling patch: true
OPatch succeeded.
[grid@rac116056266]$ /u01/app/grid/11.2.0/OPatch/opatch query -is_rolling_patch/u01/software/16056266/13696216
Oracle Interim Patch Installer version11.2.0.3.4
Copyright (c) 2012, OracleCorporation. All rights reserved.
Oracle Home : /u01/app/grid/11.2.0
Central Inventory : /u01/app/oraInventory
from :/u01/app/grid/11.2.0/oraInst.loc
OPatch version : 11.2.0.3.4
OUI version : 11.2.0.3.0
Log file location :/u01/app/grid/11.2.0/cfgtoollogs/opatch/opatch2013-06-09_04-15-32AM_1.log
--------------------------------------------------------------------------------
Patch is a rolling patch: true
OPatch succeeded.
Currently Opatch会把Shared File System看成单实例来进行Patch。OPatch 会把patch file 放在ORACLE_HOME目录,由于是共享的,因此其余节点也能够访问。
所以对于Shared FileSystem的环境,就不能使用OPatch 的高级功能:rollingpatch,在打Patch的时候,全部节点都必须shutdown。
能够在每一个节点独立的进行patch,即在opatch的时候只用: -local 关键字,这样就只会在本地节点进行patch。
--------------------------------------------------------------------------------------------
版权全部,文章容许转载,但必须以连接方式注明源地址,不然追究法律责任!
QQ: 251097186
Skype: tianlesoftware
Email: tianlesoftware@gmail.com
Blog: http://blog.csdn.net/tianlesoftware
Weibo: http://weibo.com/tianlesoftware
Twitter: http://twitter.com/tianlesoftware
Facebook: http://www.facebook.com/tianlesoftware
Linkedin: http://cn.linkedin.com/in/tianlesoftware