Oracle数据库补丁升级的一些积累

一、补丁相关的术语

在数据库技术支持服务过程中,经常会遇到补丁相关的术语,现在集中做一下说明。

 1. interim patch/one-off patch

是我们常说的小补丁,为了修复某个bug而发布的补丁,这种补丁推荐在测试库上测试无误后再安装在生产库上。

2. merged patch:

合并的补丁,当几个小补丁之间冲突,不能同时安装的时候,需要提供这种 merged patch。补丁冲突主要是由于2个或者多个补丁修改同一个文件,但是修改的内容是不同的。


3.  bundle patch

补丁集,修复多个bug。在windows 平台的oracle 没有小补丁,只有这种补丁集,至少每季度发布一次,是累积性的,也就是说每个bundle patch 会包含之前所有的bundle patch。例如 windows bundle patch 16,它会包含之前所有的15个bundle patch,所以,建议总是安装最新的bunlde patch。oracle 的集群软件和数据库软件的Windows bundle patch是同一个,例如Windows bundle patch 16 即可以打在集群上,也可以打在数据库上,要了解windows bundle patch 的补丁号,可参考mos:Note 161549.1 Oracle Database, Networking and Grid Agent Patches for Microsoft Platforms


4.critical patch update(CPU)

每季度发布一次,用来修复安全方面的一些补丁,是累积型的,目前已更名为security patch update(SPU)。可以通过下面的链接查看各个CPU所修复的具体问题http://www.oracle.com/technetwork/topics/security/alerts-086861.html


5.patch set update (PSU)

每季度发布一次,修复比较严重的问题,包含每季度的CPU,是累积型的。虽然在描述PSU的时候会用到数据库版本的第五位,比如 Database PSU 11.2.0.3.5,但实际上打完PSU后,并不会真正的改变数据库的版本。从v$version中看到的版本还是11.2.0.3.0。

⚠️ Windows上没有CPU和PSU。oracle数据库的集群和数据库软件使用不同的PSU。可以参考下面的mos文档了解每个季度的CPU,PSU,Windows bundle patch 的具体补丁号:Assistant: Download Reference for Oracle Database/GI PSU, SPU(CPU), Bundle Patches, Patchsets and Base Releases (文档 ID 2118136.2)


6.patch set

是在大版本上发布的补丁集,修复了较多的bug,可能会包含一些增强功能,比如 11.2是一个大版本,那么11.2.0.2就是一个patch set。这种补丁集经过了严格的集成测试,也是累积型的。所以我们总是推荐安装最新的patch set。


7.diagnostic patch

诊断补丁,有时候诊断一个问题的时候。为了获得更多的诊断信息,oracle的开发部门会提供一个diagnostic patch 这种补丁不是为了修复问题,而是诊断问题。


8.composite patch

从2012年4月份的database psu 11.2.0.3.2开始,推出一种新的概念叫composite patches,这是一种新型的补丁包。它不同于其他类型的补丁包,如果第一次安装composite patches 那么composite patches所包含的全部补丁都会被安装, 后续安装的composite patches,只会安装对比前一次composite patches 有变化的部分和新增加的补丁。



二、升级PSU需注意的事项


1.下载PSU补丁时,首先确认操作系统版本以及数据库版本,之后下载相应的psu补丁集。

2.安装任何补丁时一定要仔细阅读补丁对应的readme 文件,因为每个补丁的安装步骤可能有所不同。

3.在grid infrastruncture patch set update(以下简称:GI PSU)中包含了DB PSU,所以只要下载并按照GI PSU的readme安装补丁,并使用patch auto就可以把GI 和数据库的PSU 都安装上,而且使用opatch auto 的好处是完全自动化,不需要手工停止/启动GI。安装完成后,在GI和DB的oracle_home会分别安装了GI和DB的PSU,也就是每个oracle_home下都有两个psu,一个是gi的,一个是db的。推荐这种安装方法,因为有的bug需要在gi 中修复,又需要在db中修复。

4.如果在数据库(RDBMS)的oracle_home下没创建任何的数据库,也就是在ocr中找不到oracle_home下的数据库,那么 opatch auto并不会把psu 安装在oracle_home下,只会把psu 安装在GI的oracle_home下,这种情况下,如果要对数据库的oracle_home安装psu,需另外执行:#opatch auto unzip 补丁源文件 -oh <RAC_HOME>,详见mos文档 1361802.1和1479651.1.

5.安装psu的过程是滚动的(rolling),也就是现在一台节点按照readme 中的步骤安装这个psu,当这台执行完毕,所有的资源启动后,依次在其他节点执行。⚠️opatch auto不能在多个节点同时执行。

6.保证opatch 的版本高于readme中要求的版本,否则请下载最新的opatch,下载地址:https://updates.oracle.com/download/6880880.html

⚠️opatch 工具 需要同时升级gi以及rdbms软件中的opatch工具

7.oracle database psu 、bundle patch 的命名规则一般是按照推出的先后顺序,比如在2015年10月 推出的11.2.0.4的第8个db psu 就命名为:db psu 11.2.0.4.8 ;2016年1月份推出了对psu 、spu 、 bundle patch 新的命名规则。新的命名规则以11.2.0.4为例:11.2.0.4 YYMMDD 此处的YYMMDD为patch发布的具体日期。




三、补丁下载链接

1.最新的PSU补丁下载链接,登录mos,搜索2118136.2文章

Assistant: Download Reference for Oracle Database/GI PSU, SPU(CPU), Bundle Patches, Patchsets and Base Releases (文档ID 2118136.2)

2.oracle 官方推荐的补丁

Document 756671.1 Oracle Recommended Patches -- Oracle Database

3.opatch 工具的下载链接




四、举例说明

1.oracle rac 打psu 补丁主要步骤如下:
1.1  下载操作系统及数据库版本相对应的psu补丁。
1.2  下载readme 中要求opatch工具版本以上。
1.3  详细阅读readme升级步骤,以及注意事项,
2.以下为oracle rac 11.2.0.3 打 GI PSU 11.2.0.3.6为例,步骤如下:
2.1  升级opatch 工具
把grid_home和db_home上的<ORACLE_HOME>/OPatch 进行备份,然后将下载的OPatch补丁解压到 <ORACLE_HOME>/OPatch
$unzip budingwenjian.zip -d <ORACLE_HOME>
通过 ./opatch version 命令查看更新结果。
2.2  配置ocm
# su - grid
$export JAVA_HOME=$ORACLE_HOME/jdk
$GRID_HOME/OPatch/ocm/bin/emocmrsp -no_banner -output /apps/oracle/ocm.rsp

2.3  查看当前GI 以及RDBMS补丁信息
#su - grid
$<GRID_HOME>/OPatch/opatch  lsinventory  -detail  -oh  <GRID_HOME>
#su - oracle
$<db_home>/OPatch/opatch lsinventory  -detail  -oh <oracle_home>


2.4  用grid用户来上传到服务器并解压

$cd <unzipped_patch_location_path>
$ unzip 补丁源文件

2.5 安装或者回滚PSU 前必须用数据库的属主(一般为oracle)把EM agent停止:

#su - oracle

<DB_HOME>/bin/emctl stop dbconsole

2.6  检查补丁冲突

#su - grid

$cd <unzipped_patch_location_path> --到步骤2.4已解压的补丁文件路径下

$ $ORACLE_HOME/OPatch/opatch prereq



2.7  补丁安装

⚠️适用于gi 和db 的oracle_home都在本地盘,不在共享盘,而且没有使用ACFS

⚠️必须以root身份安装补丁(不需要停止GI)

#opatch auto <unzipped_patch_location_path> -ocmrf <ocm response file>

示例:# opatch auto /u01/oracle/patches -ocmrf  /u01/app/11.2.0/grid/OPatch/ocm/bin/ocm.rsp

执行了这个命令后,会自动停止这个节点上的GI和所有资源;
然后在GI和DB的oracle_home下都安装GI和DB的PSU;
最后会将这个节点上的gi 和资源都启动。


2.8  升级数据库字典

$ cd $ORACLE_HOME/rdbms/admin

$ sqlplus / as sysdba

SQL>@catbundle.sql psu apply



2.9  升级catalog数据库

如果使用了rman ,需要将您的rman catalog 库升级一下,执行:

$rman catalog  username/password@alias

RMAN>UPGRADE CATALOG



2.10  检查是否成功,查看dba_registry_history视图

Check the following log files in $ORACLE_BASE/cfgtoollogs/catbundle for any errors:

catbundle_PSU_<database SID>_APPLY_<TIMESTAMP>.log

catbundle_PSU_<database SID>_GENERATE_<TIMESTAMP>.log  



猜你喜欢

转载自blog.csdn.net/fc_barceiona/article/details/79257280