oracle补丁种类和升级方法,oracle有很多种补丁类型,我们应该对oracle的补丁类型有一定了解,特别是一些关键的补丁,可能客户会定期对数据库升级,无论修复bug,还是为了安全。
下面我对数据库的补丁进行一定的讲解:
补丁类型:
1. release
这个是数据库的基本版本, 标准产品发布。如OracleDatabase 10g Release 2的第一个发行版本为10.2.0.1,可以在OTN、edelivery等站点上公开下载
现在在网上只能下载oracle 11g和oracle 12c。
2. Patch Set Release
就是早期大家常说的PSR。这是在主版本号上发布的补丁集,修复了较多的Bug,可能会包含一些增强功能(Enhancement)。比如11.2.0.1是一个主版本,那么11.2.0.2、11.2.0.3就是2个不同的Patchset。这种补丁集经过了严格的集成测试,也是累积型的。所以推荐安装最新的Patch Set
这种补丁在oracle11.2之前都是覆盖方式升级,就是直接补丁覆盖原来软件,这样停机时间会长。如果需要升级到oracle10.2.0.5,那么只能先安装oracle 10.2.0.1,然后升级到oracle 10.2.0.5.;到oracle11.2之后 oracle使用Out-of-Place,就是补丁可以直接安装了,并且如果想升级到oracle 11.2.0.4的时候不需要先安装oracle11.2.0.1,然后升级到oracle 11.2.0.4,可以直接安装oracle 11.2.0.4。可以将Oracle Database安装的新的OracleHome目录,当安装结束后,旧的database会迁移到新的Oracle HOME目录。 这种方法是oracle推荐的方式,它可以降低停机时间,也相对更安全。但是这种方法需要至少两倍的磁盘空间。
3. Patch Set Update
就是DBA&DMA们常论道的PSU。Oracle选取在每个季度用户下载数量最多,并且得到验证具有较低风险的补丁放入到每个季度的PSU中,修复比较严重的一些问题,包含每个季度的CPU,是累积型的。虽然在描述PSU的时候会用到数据库版本第5位,比如DatabasePSU 11.2.0.3.5,但实际上打完PSU后并不会真正改变数据库的版本,从v$version中看到的版本还是4位的(11.2.0.3.0),第5位仍然是0。
这种补丁客户会经常进行操作的,也是我们需要必会的。
4. Critical Patch Update
这个指的就是CPU补丁。每季度发布一次,用来修复安全方面的一些补丁,是累积型的。目前(2012年10月)已经更名为Security Patch Update (SPU)
¤ 这类问题本来不属于软件错误,在正常使用中不会出现任何问题。但是别有用心的人可以通过运行非常精巧设计的代码 ,绕过数据库系统的安全管理机制,达到非授权存取的目的
这种补丁是偏向安全的,就是修复oracle漏洞。
5. Interim Patch/One-Off Patch
是我们常说的小补丁,为了修复某(几)个Bug而发布的补丁。这种补丁推荐在测试库上测试无误后再安装在生产库上,这种补丁是oracle最小单元。
6. Bundle Patch(BP)
补丁集,修复多个Bug。在Windows平台上的Oracle没有小补丁,只有这种BundlePatch。 这种累积型的补丁集会周期性的发布(至少每季一次),也就是每个Bundle Patch会包含之前所有的BundlePatch。比如Windows Bundle Patch 16,它会包含之前所有15个BundlePatch,所以我们总是推荐安装最新的Bundle Patch。Oracle的集群软件和数据库软件的WindowBundle Patch是同一个,比如Windows Bundle Patch 16(补丁号16167942,既可以打在集群上,也可以打在数据库上)
补丁打得方法和注意事项:
以上的补丁除了psr直接使用runInstaller,其他的补丁类型都是使用opatch命令,在oracle 10g之前,我们需要单独下载此命令,到oracle 10g之后这个命令在 ORACLE_HOME/Opatch下,因此,最好在环境变量path中添加以下
打补丁需要inventory是没有问题的,需要通过opatch lsinventory来验证。
由于rac环境除了psr,其他补丁类型可以每台服务器单独打,因此在打补丁的时候加上-local。如:
opatch apply -local
除了psr,其他补丁可以回退,回退方法:opatch rollback -id 后边跟补丁号。