Loading
0

使用opatch对Oracle数据库打补丁

 

Oracle数据库除了一些大的版本的补丁集是通过安装的,其他的一些小的补丁一般都是通过Oracle的补丁程序opatch来实施应用的,我们虽然安装了一个大的版本的数据库补丁,但是Oracle每过一段时间就会出来一大堆的BUG,放出一大堆的小补丁,所以打补丁是必不可少的事,作为一个DBA,这是最基本的技能,下面我们来了解一下opatch的使用。

opatch这个工具是$ORACLE_HOME/OPatch下:

你可以将这个路径加入PATH环境变量中方便使用:

使用opatch查看该Oracle程序打补丁的情况:

这里会列出该Oracle程序的已打补丁信息,我们可以看到我们的opatch程序版本是11.2.0.3.4的,数据库版本是11.2.0.4.0的,没有安装其他临时补丁。

单独查看opatch版本的命令:

opatch程序有时是需要单独更新版本的,有专门的opatch的补丁,有一些新的patch需要较新的opatch程序才能够打上,比如11.2.0.3.0版本的数据库升级到11.2.0.3.6版本就需要opatch版本为11.2.0.3.4,而11.2.0.3.0自带的opatch版本是11.2.0.3.0,所以需要先单独升级opatch,我们以升级opatch版本11.2.0.3.6为例子举例:

首先下载相应的opatch补丁,11.2.0.3.6版本linux64位的opatch补丁为p6880880_112000_Linux-x86-64.zip,可以去MOS查找下载。

备份原版本的opatch将该目录打包:

删除原版本opatch的所有文件,不要删除OPatch目录:

将p6880880_112000_Linux-x86-64.zip解压到OPatch目录:

验证opatch版本是否为11.2.0.3.6:

opatch升级成功。

 

使用opatch为Oracle打补丁:

一般Oracle的补丁中都包含一个README.html或者README.txt文件,这是补丁的安装注意事项,一般都会说明补丁安装的步骤、方法、可能出现的问题以及回退方法,安装前需要仔细查看,按照说明的方式打补丁一般不会有问题。

我们以最常见的单节点的打补丁举例说明:

首先将数据库、监听以及em都必须关闭,否则打补丁时会报错,然后将补丁解压,我们以11.2.0.4.1的补丁集17478514为例:

然后需要进行预检,检查你需要打的补丁是否与现有的补丁有冲突:

如果有冲突则根据提示解决冲突,如果没有冲突那么可以进行打补丁操作,一般打补丁都是进入到补丁目录中,比如17478514,然后执行opatch apply即可,但有些比较复杂的补丁可能需要不同的方式应用,比如使用apply auto,比如对于RAC环境各个节点上grid与database的补丁的应用,一般README中都会指导你完成补丁的应用:

Email账号不用填写,我们在最后看到有warning字样,有部分组件打补丁时有问题,这些一般都能在补丁所提供的README文件中找到对应的解决办法,在这个README文件中提到了这个问题,它给了一个MOS的文章链接,该问题说明该问题可以被安全的忽略,所以我们不必理会。

查看补丁应用结果:

我们可以看到在临时性补丁中已经有了1747814这个补丁集,该补丁集修复了的一些BUG也在这里可以看到。

执行catbundle.sql将补丁信息反射到数据库中,使数据库知道你最后一次打了什么补丁或者回滚了哪些补丁:

如果你使用了RMAN的catalog,那么你还要更新CATALOG数据库:

到这里补丁就打完了。

 

如果你打了补丁发现有问题,那么你需要回滚补丁:

使用以上命令就可以回滚相应ID的补丁。

然后需要执行以下脚本将补丁回滚的信息反射到数据库中。

使用opatch工具为Oracle程序打补丁就介绍到这里,具体的打补丁的方式可能每个补丁会略有区别,但总体上就是使用以上的步骤和方式进行实施的,在打补丁前请详细阅读补丁说明以了解实施方法和相关问题。

请尊重我们的辛苦付出,未经允许,请不要转载 Ask600 的文章!