1.概述
近几年,随着我们用户Oracle数据库的应用越来越深入,环境越来越复杂,一些Oracle常见的BUG也会偶尔的被触发。因此,我们对技术人员要求不能再像以前一样只要求会安装数据库,还应该要求其掌握在遇到数据库BUG的时候,能够熟练的找到并安装对应的修复补丁才行。
因此该文档用于指导技术人员,能够查看和检查数据库环境的补丁安装情况,并对提供的Oracle补丁文件进行安装操作。
2. Oracle补丁体系
Oracle数据库同其他企业软件一样,正式版的发布和运维都要经过一个漫长的周期,当正式版发布后,在其生命周期内会Oracle公司会在官网上定期发布更新补丁程序,根据发布周期和集合程度不同,它们分别是维护版本(Version)、补丁集(Patch Set)、关键补丁更新(Critical Patch Update)、补丁集更新(Patch SetUpdate)和小补丁(One-off patch)几类,下面简单的介绍下它们的区别。
Ø Version/维护版本
针对前一个维护版本的所有补丁进行整理,增加新的功能或对软件有较大的改动,进行整体测试,得到一个软件版本"包",称为版本Version。比如 11.2
Ø Patch Set/补丁集
在两次产品版本之间发布的一组经过全面测试的累计整体修复程序(一般每年发布一两次),如11.2.0.211.2.0.3。
Ø Critical Patch Update(CPU)/关键补丁更新
指每季度提供一次的一组高优先级修复程序(往往针对安全性问题)。对于以前的安全性修复程序而言,这些CPU是累积的,只需要安装最近最后一个就可以,它就包含了之前的所有CPU补丁,但也可包含其他修复程序,目的是解决与非安全性补丁之间的补丁冲突问题(即降低合并请求的必要性)。目前已经更名为Security Patch Update (SPU)。
Ø Patch Set Update(PSU)/补丁集更新
从10.2.0.4起,在两个补丁集之间发布,每年发布4次;每个补丁集更新包含50~100个修复,经测试和集成后发布,如11.2.0.3.1,11.2.0.3.2,PSU包含CPU,所以建议尽量安装PSU,PSU通常也是增量的,大部分PSU可以直接安装,但有些PSU则必须要求安装了上一 个版本的PSU之后才能继续安装,要仔细看各个PSU的Readme文档。
Ø One-off patch(个别补丁)
为了修复某(几)个Bug而发布的补丁,个别补丁是针对Oracle公司发现的或客户报告的某一个BUG编写的补丁,多个个别补丁之间一同安装时可能会有冲突,即同一个目标模块分别进行了不同的修改。另外,即便在安装时没有发现冲突,由于没有进行严格的集成测试,运行过程中由于相互作用是否会发生意外也不能完全排除,个别布丁的命名一般是P后面加bug号,如P6139856,就是修复bug号为6139856的个别补丁。
其中前面两类维护版本(Version)和补丁集(Patch Set)的安装配置属于我们传统意义上的大版本升级,操作起来相对比较复杂,后续会专门提供文档进行讲解,这里我们就不再单独介绍,而后三个关键补丁更新(Critical Patch Update)、补丁集更新(Patch SetUpdate)和个别补丁(One-off patch)的操作基本相同,本文将针对这3类补丁进行详细的讲述,使得技术人员通过本文的讲解,能够在实际工作中顺利的掌握并进行ORACLE补丁安装部署。
3. 补丁的获取
3.1. PSU补丁获取
要想获取和下载CPU/PSU,必须要有Oracle Support账号才行,渠道如果没有帐号,可以向高级技术支持部帮助获取,通过帐号登录metalink,查询文章id为1454618.1的文档,名称为Quick Reference to Patch Numbers for Database PSU, SPU(CPU), BundlePatches and Patchsets (Doc ID 1454618.1),这个文档链接了所有数据库版本目前已经发布的CPU和PSU,并且定期进行更新,如下为10.2.0.5版本的PSU和CPU的列表
可以看到,最新的PSU是10.2.0.5.12,这里我们一般只需要下载安装这个PSU就可以,不过10g的PSU下载需要更高的帐号权限,目前公司账户已经不能下载,因此建议大家以后逐渐升级到11g数据库。
3.2. 个别补丁获取
而对于个别补丁,我们一般是通过官方问题查询问题的时候,了解到问题的bug号,然后通过,然后通过bug号查找对应的个别补丁,如下:
查询结果会显示出该补丁对应的数据库和平台,我们只要下载对应的补丁程序就可以了,如下
下载的时候一定要注意操作系统平台和适用的数据库版本信息。
4. OPatch 工具
在获取了补丁程序后,我们就需要对补丁进行安装,从9.2版开始,Oracle公司实现了个别补丁安装工具OPatch。 通过它集中管理所有已安装的个别补丁;个别补丁的安装和卸载都使用OPatch命令完成,冲突检测也由OPatch在安装时自动完成;提供列表命令可以很方便得到已安装个别补丁的信息,opatch命令格式为:
opatch< command > [< command_options >] [ -h[elp] ]
10g(10.1和10.2)版本中,OPatch作为一个标准工具,在安装时自动安装(安装在$ORACLE_HOME/OPatch目录下),不过有时候根据补丁的要求,需要使用最新版本的OPatch工具,这就要从metalink下载最新版本的OPatch工具,这一点必须注意,后续我们会结合案例进行讲解。
5. 补丁安装
接下来我们就演示下如何在RAC环境中安装PSU补丁,为什么要使用RAC环境最为案例演示?因为RAC环境的补丁安装相对复杂,几乎涵盖了补丁安装的各种情况,如果掌握,单机环境安装相对更加简单,如果技术人员通过本文掌握了RAC环境的PSU补丁安装,再进行单机环境的补丁安装应该都不成问题。
5.1. 环境检查
在安装PSU补丁前我们先看下目前环境的版本和环境,确定安装环境是否符合补丁安装的要求,避免环境错误,可以通过下面的语句查询:
SQL>select * from v$version;(查看数据库版本)
BANNER
-------------------------------------------------------------------------------
OracleDatabase 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQLRelease 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNSfor Linux: Version 11.2.0.1.0 - Production
NLSRTLVersion 11.2.0.1.0 - Production
SQL>
[root@rac1~]# uname –rm(查看操作系统版本)
2.6.18-164.el5i686
可以看到目前我们的演示环境是一个11.2.0.1.0的RAC环境,linux32位操作系统,因此我们决定安装对应这个版本最新的PSU补丁。
5.2. PSU补丁下载
接下来就是通过登录metalink账户查询(Doc ID 1454618.1)文档,大部分情况下技术人员是没有metalink帐号,可以向高级技术支持咨询补丁情况,我们这里查询的结果如下
可以看到11.2.0.1.0最新的PSU是11.2.0.1.6,由于PSU是累计的,因此我们这里只需要下载最新的这个PSU补丁就可以了,点击进入下载界面,
选择对应的操作系统平台,点击download,下载补丁包,一般补丁包的命名如p12419378_112010_Linux.zip,是一个压缩文件,我们把它上传到服务器上,解压成一个文件夹,阅读文件夹中的README.html文件,里面对该PSU补丁的安装方式和安装注意事项进行了详细的描述,因此建议养成阅读该文件的习惯,我们这里截取第三部分安装的内容如下,
如果大家有点英文知识,可以清楚的在看到3.1.1和3.1.2中提到,如果要在RAC和ASM环境安装这个10.2.0.1.6的PSU,应该保证先安装了Patch 9655006和Patch 8898852两个补丁,其中9655006是GI的PSU补丁,可以使GI升级到11.2.1.2版本,而8898852是一个个别补丁(One-off patch),我们得先进行这两个补丁的安装,才能进行10.2.0.1.6PSU的安装。
5.3. 前期准备
5.3.1. 前提补丁下载
先找到这2个补丁的安装文件,通过补丁号进行查询,分别下载p9655006_112010_LINUX.zip和p8898852_112010_Linux.zip,从补丁的介绍可以看到,其中p9655006其实就是11.2.0.1.2PSU,这个包有140M大小,而p8898852是一个‘个别补丁’,非常的小只有几十K,我们先来安装比较简单的个别补丁,由于这个补丁是数据库补丁,通过oracle用户解压,具体命令如下:
[oracle@rac1~]$ unzip p8898852_112010_Linux.zip
个别补丁的安装非常简单,一般情况下只要满足其安装条件,执行一条命令就完成,当然我们首先还是要看下这个补丁的说明文档,其条件就是要求补丁安装的时候实例必须关闭,我们通过命令关闭实例,然后进入补丁解压文件,执行简单的补丁应用命令opatch apply就可以完成补丁的安装(当然前提是你要设置opatch执行路径的环境变量PATH),如下:
[oracle@rac1~]cd 8898852
[oracle@rac18898852]opatch apply
OracleInterim Patch Installer version 11.2.0.1.0
Copyright(c) 2013, Oracle Corporation. All rightsreserved
OracleHome :/u01/app/oracle/product/11.2.0/db_1
CentralInventory : /u01/app/oraInventory
from :/u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatchversion : 11.2.0.1.50
OUIversion : 11.2.0.1.0
……
patch/home/oracle/8898852 apply successfulfor home /u01/app/oracle/product/11.2.0/db_1
非常简单,补丁就执行安装完成,通过命令检查下补丁是否安装成功,如下,
[oracle@rac1OPatch]$ ./opatch lsinventory
Patchhistory file:/u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt
LsinventoryOutput file location :/u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2013-10-25_17-14-10PM.txt
--------------------------------------------------------------------------------
InstalledTop-level Products (1):
OracleDatabase 11g 11.2.0.1.0
Thereare 1 products installed in this Oracle Home.
Interimpatches (1) :
Patch 8898852 : applied on Fri Oct 25 17:08:23 CST 2013
UniquePatch ID: 12383575
Created on 12 Apr 2010, 05:52:21 hrs PST8PDT
Bugs fixed:
8898852(可以看到补丁已经成功安装)
Racsystem comprising of multiple nodes
Local node = rac1
Remote node = rac2
OPatchsucceeded.
可以看到这个补丁已经安装成功,接下来同样的方式在其他节点执行一边,这里就不在演示,总之个别补丁的安装非常简单,只要操作过一次就基本能够掌握,接下来我们就来安装比较复杂的P9655006补丁,首先把补丁程序上传到grid用户的home目录,然后创建一个存放目录/home/grid/stage/patch,进行解压操作,解压的时候采用unzip命令,如下:
[grid@rac1~]$ unzip p9655006_112010_LINUX.zip -d /home/grid/stage/patch
inflating: stage/patch/9655006/files/bin/gnsd
inflating: stage/patch/9655006/files/bin/gnsd.bin
inflating: stage/patch/9655006/files/bin/oclskd.bin
inflating: stage/patch/9655006/files/bin/ocrdump.bin
inflating: stage/patch/9655006/files/bin/acfsdriverstate
……(省略)
inflating:stage/patch/9654983/files/javavm/install/jvmursc.sql
inflating: stage/patch/9654983/patchmd.xml
creating: stage/patch/9654983/custom/
creating: stage/patch/9654983/custom/scripts/
inflating: stage/patch/9654983/custom/scripts/pre
inflating: stage/patch/9654983/custom/scripts/post
inflating: stage/patch/bundle.xml
extracting: stage/patch/README.txt
inflating: stage/patch/README.html
[grid@rac1~]$ cd stage/patch/
[grid@rac1patch]$ ls
9654983 9655006 bundle.xml README.html README.txt
5.3.2. 前提条件核实
可以看到通过解压得到2个文件夹(9654983和9655006)和一个README.html说明文档,首先我们还是应该认真阅读下该补丁的说明文档,这里我要提醒每个技术人员,记到每次在安装补丁前都应该对补丁的说明文档进行认真的阅读,防止安装过程出现意外,首先来看2.2补丁安装的先决条件,部分截图如下:
该补丁主要有两点需要注意的,提前对环境进行准备:
第一点:要求Opatch工具的版本必须是11.2.0.1.3及之后,我们来通过opatch version命令查看下当前版本信息,如下:
[grid@rac1OPatch]$ ./opatch version
InvokingOPatch 11.1.0.6.6
OPatchVersion: 11.1.0.6.6
OPatchsucceeded.
可以看到版本不符合要求,这就需要我们在metalink上去下载符合要求的Opatch工具,下载地址在说明文档中有连接,我们直接点击进入连接下载p6880880_112000_LINUX.zip压缩文件,然后通过下面的命令,解压到crs_home目录覆盖原来的Opatach文件,如下:
[grid@rac1~]$ unzip p6880880_112000_LINUX.zip -d /u01/app/grid/
Archive: p6880880_112000_LINUX.zip
creating: /u01/app/grid/OPatch/oplan/
inflating:/u01/app/grid/OPatch/oplan/README.html
inflating:/u01/app/grid/OPatch/oplan/README.txt
creating: /u01/app/grid/OPatch/oplan/jlib/
inflating: /u01/app/grid/OPatch/oplan/jlib/oplan.jar
……
然后切换到oracle用户,同样解压到oracle_home目录,如下
[oracle@rac1~]$ unzip p6880880_112000_LINUX.zip -d /u01/app/oracle/product/11.2.0/db_1/
Archive: p6880880_112000_LINUX.zip
creating:/u01/app/oracle/product/11.2.0/db_1/OPatch/oplan/
inflating:/u01/app/oracle/product/11.2.0/db_1/OPatch/oplan/README.html
inflating:/u01/app/oracle/product/11.2.0/db_1/OPatch/oplan/README.txt
creating:/u01/app/oracle/product/11.2.0/db_1/OPatch/oplan/jlib/
inflating: /u01/app/oracle/product/11.2.0/db_1/OPatch/oplan/jlib/oplan.jar
inflating:/u01/app/oracle/product/11.2.0/db_1/OPatch/oplan/jlib/oracle.oplan.classpath.jar
inflating:/u01/app/oracle/product/11.2.0/db_1/OPatch/oplan/jlib/automation.jar
inflating: /u01/app/oracle/product/11.2.0/db_1/OPatch/oplan/jlib/OsysModel.jar
inflating:/u01/app/oracle/product/11.2.0/db_1/OPatch/oplan/jlib/EMrepoDrivers.jar
……
然后分别再用grid和oracle用户确认下其对应的OPatch工具的版本情况,是否已经更新,如下
[grid@rac1OPatch]$ ./opatch version
OPatchVersion: 11.2.0.3.5
OPatchsucceeded
[oracle@rac1OPatch]$ ./opatch version
OPatchVersion: 11.2.0.3.5
OPatchsucceeded
当然,这里只操作了1号节点,要确保RAC所有节点重复都进行了该操作。现在看到,已经更新为最新的11.2.0.3.5版本,符合本次补丁对Opatch工具的要求。
第二点:OCM(OracleConfiguration Manager)配置,在运行补丁的时候,需要配置OCM,方法很简单,在说明文档中有详细的记录,只需要在以grid用户执行$crs_home/OPatch/ocm/bin/emocmrsp根据提示进行配置,配置完成后会生成个ocm.rsp文件,后续会用到这个文件。
[grid@rac1patch]$ /u01/app/grid/OPatch/ocm/emocmrsp
5.3.3. 前提补丁安装
在确认安装条件满足后,就开始正式的准备p9655006补丁的安装,首先安装GI的补丁,安装的时候要求crs进程必须启动,因此这里我们只需要停止数据库实例,我们先打1号节点的补丁,因此先停止1号节点的实例,如下:
[grid@rac1 bin]$srvctl stop instance -d orcl -i orcl1
然后我们要以root用户,执行opatchauto执行补丁升级,后面要跟上补丁的解压目录和crs_home目录,如下,
[root@rac1bin]# opatch auto /home/grid/stage/patch -oh /u01/app/grid/(这里是CRS_HOME目录)
Executing/u01/app/grid/perl/bin/perl /u01/app/grid/OPatch/crs/patch11202.pl -patchdir/home/grid/stage -patchn patch -oh /u01/app/grid/ -paramfile/u01/app/grid/crs/install/crsconfig_params
Usingconfiguration parameter file: /u01/app/grid/crs/install/crsconfig_params
OPatch is bundled with OCM, Enter the absolute OCMresponse file path:
/home/grid/stage/patch/ocm.rsp(这里要求输入刚才生成的ocm.rsp文件)
Unableto determine if /u01/app/grid is shared oracle home
Enter'yes' if this is not a shared home or if the prerequiste actions are performedto patch this shared home (yes/no):yes
Successfullyunlock /u01/app/grid
patch/home/grid/stage/patch/9655006 applysuccessful for home /u01/app/grid
patch/home/grid/stage/patch/9654983 applysuccessful for home /u01/app/grid
最后我们可以看到提示,补丁成功安装,接下来同样的在节点2上进行补丁安装,方法相同,这里就不再描述,接下来用同样的方式给数据库database打补丁,同样的先在节点1上进行补丁安装,命令如下
[root@rac1bin]# opatch auto /home/grid/stage/patch/ -oh /u01/app/oracle/product/11.2.0/db_1/(这个是db_home目录)
xecuting/u01/app/grid/perl/bin/perl /u01/app/grid/OPatch/crs/patch11202.pl -patchdir/home/grid/stage -patchn patch -oh /u01/app/oracle/product/11.2.0/db_1/-paramfile /u01/app/grid/crs/install/crsconfig_params
INCis /home/grid/stage/patch/9655006/files/crs/install /u01/app/grid/crs/install/u01/app/grid/perl/lib/5.10.0/i686-linux-thread-multi/u01/app/grid/perl/lib/5.10.0/u01/app/grid/perl/lib/site_perl/5.10.0/i686-linux-thread-multi/u01/app/grid/perl/lib/site_perl/5.10.0 .
opatchauto log file location is /u01/app/grid/OPatch/crs/../../cfgtoollogs/opatchauto2013-11-05_11-57-18.log
2013-11-0511:57:18: Parsing the host name
2013-11-0511:57:18: Checking for super user privileges
2013-11-0511:57:18: User has super user privileges
DetectedOracle Clusterware install
Usingconfiguration parameter file: /u01/app/grid/crs/install/crsconfig_params
OPatch is bundled with OCM, Enter the absolute OCMresponse file path:
/home/grid/stage/patch/ocm.rsp
Unableto determine if /u01/app/oracle/product/11.2.0/db_1 is shared oracle home
Enter'yes' if this is not a shared home or if the prerequiste actions are performedto patch this shared home (yes/no):yes
Unableto determine if /u01/app/oracle/product/11.2.0/db_1 is shared oracle home
Enter'yes' if this is not a shared home or if the prerequiste actions are performedto patch this shared home (yes/no):yes
patch/home/grid/stage/patch/9655006/custom/server/9655006 apply successful for home /u01/app/oracle/product/11.2.0/db_1
patch/home/grid/stage/patch/9654983 applysuccessful for home /u01/app/oracle/product/11.2.0/db_1
我们可以通过opatch lsinventory命令检查补丁的安装情况,如下
[oracle@demo-rac1OPatch]$ ./opatch lsinventory
OracleInterim Patch Installer version 11.2.0.3.5
Copyright(c) 2013, Oracle Corporation. All rightsreserved.
OracleHome :/u01/app/oracle/product/11.2.0/db_1
CentralInventory : /u01/app/oraInventory
from :/u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatchversion : 11.2.0.3.5
OUIversion : 11.2.0.1.0
Logfile location :/u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2013-11-05_12-04-17PM_1.log
LsinventoryOutput file location :/u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2013-11-05_12-04-17PM.txt
--------------------------------------------------------------------------------
InstalledTop-level Products (1):
OracleDatabase 11g 11.2.0.1.0
Thereare 1 products installed in this Oracle Home.
Interimpatches (2) :
Patch 9654983 : applied on Tue Nov 05 12:00:22 CST 2013
UniquePatch ID: 12651759
Created on 17 Jun 2010, 03:31:21 hrs PST8PDT
Bugs fixed:
9068088, 9363384, 8865718, 8837736,8801119, 9054253, 8725286, 8974548
9093300, 8909984, 8755082, 8780372,8664189, 8769569, 7519406, 8822531
7705591, 8650719, 9637033, 8639114,8723477, 8729793, 8919682, 8856478
9001453, 8733749, 8565708, 8735201,8684517, 8870559, 8773383, 8981059
8812705, 9488887, 8813366, 9242411,8822832, 8897784, 8760714, 8775569
8671349, 8898589, 9714832, 8642202,9011088, 9170608, 9369797, 9165206
8834636, 8891037, 8431487, 8570322,8685253, 8872096, 8718952, 8799099
9032717, 9399090, 9546223, 9713537,8588519, 8783738, 8834425, 9454385
8856497, 8890026, 8721315, 8818175,8674263, 9145541, 8720447, 9272086
9467635, 9010222, 9197917, 8991997,8661168, 8803762, 8769239, 9654983
8706590, 8778277, 8815639, 9027691,9454036, 9454037, 9454038, 9255542
8761974, 9275072, 8496830, 8702892,8818983, 8475069, 8875671, 9328668
8798317, 8891929, 8774868, 8820324,8544696, 8702535, 8268775, 9036013
9363145, 8933870, 8405205, 9467727,8822365, 9676419, 8761260, 8790767
8795418, 8913269, 8717461, 8607693,8861700, 8330783, 8780281, 8780711
8784929, 9341448, 9015983, 9119194,8828328, 8665189, 8717031, 8832205
9676420, 8633358, 9321701, 9655013,8796511, 9167285, 8782971, 8756598
8703064, 9066116, 9007102, 9461782,9352237, 8505803, 8753903, 9216806
8918433, 9057443, 8790561, 8733225,9067282, 8928276, 9210925
Patch 9655006 : applied on Tue Nov 05 11:58:48 CST 2013
UniquePatch ID: 12651759
Created on 6 Jul 2010, 12:02:48 hrs PST8PDT
Bugs fixed:
9655006, 9778840, 9343627, 9783609,9262748
可以看到补丁的安装情况,PSU需要的几个补丁都已经安装上去,最后就是执行下数据字典更新脚本,RAC环境下只要保证一个实例启动状态,然后在oracle用户下执行下面的语句,执行脚本
cd$ORACLE_HOME/rdbms/admin
sqlplus/nolog
SQL>CONNECT / AS SYSDBA
SQL>@catbundle.sql psu apply
SQL>QUIT
这个脚本会更新数据字典表,如果不执行可能使用过程中会出现一些莫名的错误,因此千万不要忘记执行。
5.4. PSU补丁安装
接下来在完成了前提补丁的安装后,我们又再次回答PSU的说明文档,接着看还有那些先决条件需要准备,为了保障 make, ar, ld, 和nm命令能够直接被调用,需要提前设置环境变量路径,如下
exportPATH=$PATH:/usr/ccs/bin
在经过之前前提补丁的安装后,接下来再安装PSU补丁就应该轻车熟路,11.2.0.1.6PSU补丁的安装过程就如同一个‘个别补丁‘一样简单,先在节点1上进入解压的目录(一般为12419378),然后直接运行opatch apply如下,当然前提是数据库实例已经关闭,否则会在环境校验阶段出现错误提示,关闭实例的操作这里就不再演示,可以一个节点一个节点的操作,也可以所有节点一起操作,下面我们直接进行补丁的安装:
[oracle@rac1 12419378]$ opatch apply
OracleInterim Patch Installer version 11.2.0.3.5
Copyright(c) 2013, Oracle Corporation. All rightsreserved.
OracleHome :/u01/app/oracle/product/11.2.0/db_1
CentralInventory : /u01/app/oraInventory
from :/u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatchversion : 11.2.0.3.5
OUIversion : 11.2.0.1.0
Logfile location :/u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/12419378_Nov_11_2013_16_17_40/apply2013-11-11_16-17-40PM_1.log
Applyinginterim patch '12419378' to OH '/u01/app/oracle/product/11.2.0/db_1'
Verifyingenvironment and performing prerequisite checks...
Patch12419378: Optional component(s) missing : [ oracle.client, 11.2.0.1.0 ]
Interimpatch 12419378 is a superset of the patch(es) [ 9654983 ,9655006] in the Oracle Home
OPatchwill roll back the subset patches and apply the given patch.
Allchecks passed.(环境检查成功)
Thisnode is part of an Oracle Real Application Cluster.
Remotenodes: 'demo-rac1'
Localnode: 'demo-rac2'
Pleaseshutdown Oracle instances running out of this ORACLE_HOME on the local system.
(OracleHome = '/u01/app/oracle/product/11.2.0/db_1')
……
Enter'yes' if this is not a shared home or if the prerequiste actions are performedto patch this shared home (yes/no):yes
patch/home/oracle/12419378 apply successfulfor home /u01/app/oracle/product/11.2.0/db_1
以上同样的操作在其他节点也进行一次,补丁安装成功后,启动数据库实例,同样要对数据字典进行更新,该操作只需要在一个节点上执行就行,如下:
cd$ORACLE_HOME/rdbms/admin
sqlplus/nolog
SQL>CONNECT / AS SYSDBA
SQL>@catbundle.sql psu apply
SQL>QUIT
这步操作不会出现太大的问题,在补丁安装完成后,本次11.2.0.1.6PSU补丁的安装全部过程就结束,我们可以通过下面的命令进行校验:
[oracle@rac1admin]$ opatch lsinventory -bugs_fixed | grep -i 'DATABASE PSU'
9352237 12419378 Mon Nov 11 16:14:36 CST 2013 DATABASE PSU 11.2.0.1.1
9654983 12419378 Mon Nov 11 16:14:36 CST 2013 DATABASE PSU 11.2.0.1.2 (INCLUDES CPUJUL2010)
9952216 12419378 Mon Nov 11 16:14:36 CST 2013 DATABASE PSU 11.2.0.1.3 (INCLUDES CPUOCT2010)
10248516 12419378 Mon Nov 11 16:14:36 CST 2013 database psu 11.2.0.1.4 (includes cpujan2011)
11724930 12419378 Mon Nov 11 16:14:36 CST 2013 database psu 11.2.0.1.5 (includes cpuapr2011)
12419378 12419378 Mon Nov 11 16:14:36 CST 2013 DATABASE PSU 11.2.0.1.6 (INCLUDES CPUJUL2011)
从列出的结果目录可以看到,我们现在的已经成果安装上了11.2.0.1.6PSU的补丁,而且我们可以看到,由于PSU补丁是累积的,因此还包括了11.2.0.1.1~11.2.0.1.5的PSU补丁,至此整个案例的补丁安装的演示就结束了。
6. 结语
通过上面内容我们介绍了ORACLE的补丁概念,知道了补丁的分类,并且了解什么是’个别补丁’和PSU补丁,以及如何通过opatch工具进行补丁的安装,可以看到安装过程并不复杂,主要注意以下几点:
1. 确定补丁的正确性,包括补丁名称、适用数据库版本、操作系统等
2. 认真阅读补丁的说明文档,一定要按照说明文档要求安装补丁;
3. 安装前最好在模拟环境中进行测试,确认安装过程和结果不出现意外;
4. 安装过程中注意执行顺序,安装完毕和进行检查,确认补丁是否安装成功。
最后想说一句,补丁安装前一定要注意备份,安装的风险随着数据库应用复杂性和数据量的增长会成倍增长,对一个才实施的空数据库安装补丁肯定和一个已经运行很久BT级的数据库安装还是有很大的区别,总之做好备份是最最关键的一步。
: