CPU:Critical Patch Update,紧急补丁更新
CPU已更名为SPU(Security Patch Update)
每季度发布一次,用来修复安全方面的累积型补丁,即最新的CPU补丁已经包含以往的CPU补丁,只需安装最新的CPU补丁即可。
PSU:Patch Set Update,补丁集更新
Oracle选取在每个季度用户下载数量最多、且得到验证具有较低风险的补丁放入到每个季度的PSU中。在每个PSU中不但包含Bug的修复,还包含了最新的CPU。PSU通常随CPU一起发布。PSU通常是增量的,大部分PSU可以直接安装,但有些PSU必须要求安装上一个版本的PSU之后才能继续安装
patch set
是在大版本上发布的补丁集,修复了较多的bug,可能会包含一些增强功能,比如 11.2是一个大版本,那么11.2.0.2就是一个patch set。这种补丁集经过了严格的集成测试,也是累积型的。所以我们总是推荐安装最新的patch set。 安装Patch Set后的版本称Patch Set Release(PSR), PSR是累积型的, 同时存在几个PSR时,只需安装最新版本一次就可以了
Window 平台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
composite patch
从2012年4月份的database psu 11.2.0.3.2开始,推出一种新的概念叫composite patches,这是一种新型的补丁包。它不同于其他类型的补丁包,如果第一次安装composite patches 那么composite patches所包含的全部补丁都会被安装, 后续安装的composite patches,只会安装对比前一次composite patches 有变化的部分和新增加的补丁。 PSU就是一种Composite Patch
DBBP (Database Proactive Bundle Patch)
从2016年4月 Database Patch for Engineered Systems and Database In-Memory Bundle Patch (BP) ”改名为 “Database Proactive Bundle Patch”. 也就是DBBP,不再仅限于EXADATA系统,你也许会话如果以字母简写更应该呢DPBP或者是PBP for DB, “Database Proactive Bundle Patch”更是多个PSU的超集,包含了GI PSU、DB PSU及EXPDATA和DBIM的相关修复, 每季度发布一次
从dba_registry_sqlpatch视图中可以看到Database Bundle Patch (DBBP) 区别于原来的PSU,查看视图: dba_registry_history
从12.1.0.2以后Database Proactive Bundle Patch可以应用于所有数据库环境。另外DBBP仅用于LINUX和UNIX环境,与WINDOWS 的BP没有关系, Windows平台还继续使用Bundle Patch (Windows 32bit & 6bit). 更多信息关注Note 1937782.1
DBBP是PSU的超集,BP是增量包含的如10,包含1-9,也包含了创建BP时最近的PSU和CPU,所以建议安装最新的BP, 准确应该是说包含了PSU,CPU修复的问题。 然DBBP是包含了多个PSU和BUG FIXED,但是DBBP不能是基于上一季度的PSU继续安装,反之亦然,所以如果切换DBBP和PSU的补丁安装技术需要提前rollback有冲突的PSU, 这样做需要更我的时间窗口和停机时间。
GI PSU
在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中修复。
如果在数据库(RDBMS)的oracle_home下没创建任何的数据库,也就是在ocr中找不到oracle_home下的数据库,那么 opatch auto并不会把psu 安装在oracle_home下,只会把psu 安装在GI的oracle_home下,这种情况下,如果要对数据库的oracle_home安装psu,需另外执行:#opatch auto unzip 补丁源文件 -oh
安装psu的过程是滚动的(rolling),也就是现在一台节点按照readme 中的步骤安装这个psu,当这台执行完毕,所有的资源启动后,依次在其他节点执行。⚠️opatch auto不能在多个节点同时执行。
如何选择最新的补丁?
查看Assistant: Download Reference for Oracle Database PSU, SPU(CPU), Bundle Patches, Patchsets and Base Releases (Doc ID 2118136.2) 另外SPU, PSU ,DBBP不兼容,更换补丁方法要检查冲突,回滚之前的冲突,如安装DBBP不能基于上一季度的PSU。
1) SPU contains only the CPU program security fixes
2)PSU contains the CPU program security fixes and additional high-impact/low-risk critical bug fixes
3)Proactive Bundle Patch (PBP) includes all PSU fixes along with fixes targeted at the specific Bundle Patch environment.
4)PSU – Can be applied on Database Servers, Client-Only and Instant Client.
5)GI PSU – Can be applied on GI Home (Oracle Restart or Oracle Clusterware) in conjunction with RAC, RACOne, Single Instance home, Client-Only and Instant Client.
6)Proactive Bundle Patch – Can be applied on GI Home in conjunction with RAC, RACOne, or Single Instance home, Client-Only and Instant Client.
oracle rac 11.2.0.3 打 GI PSU 11.2.0.3.6示例
1.1 升级opatch 工具
把grid_home和db_home上的<ORACLE_HOME>/OPatch 进行备份,然后将下载的OPatch补丁解压到<ORACLE_HOME>/OPatch
$unzip budingwenjian.zip -d <ORACLE_HOME>
通过 ./opatch version 命令查看更新结果。
1.2 配置ocm
# su - grid
$export JAVA_HOME=$ORACLE_HOME/jdk
$GRID_HOME/OPatch/ocm/bin/emocmrsp -no_banner -output /apps/oracle/ocm.rsp
1.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>
1.4 用grid用户来上传到服务器并解压
$cd <unzipped_patch_location_path>
$ unzip 补丁源文件
1.5 安装或者回滚PSU 前必须用数据库的属主(一般为oracle)把EM agent停止:
#su - oracle
<DB_HOME>/bin/emctl stop dbconsole
1.6 检查补丁冲突
#su - grid
$cd <unzipped_patch_location_path> --到步骤2.4已解压的补丁文件路径下
$ $ORACLE_HOME/OPatch/opatch prereq
1.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 和资源都启动。
1.8 升级数据库字典
$ cd $ORACLE_HOME/rdbms/admin
$ sqlplus / as sysdba
SQL>@catbundle.sql psu apply
1.9 升级catalog数据库
如果使用了rman ,需要将您的rman catalog 库升级一下,执行:
$rman catalog username/password@alias
RMAN>UPGRADE CATALOG
1.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
补丁管理工具opatch
opatch命令格式为: opatch < command > [< command_options >] [ -h[elp] ]
命令有:
1 apply(安装个别补丁) 2 rollback(卸载个别补丁) 3 lsinventory(对inventory进行列表) 4 query(显示某一个别补丁的详细信息) 5 version(显示opatch版本信息)。 在opatch目录下,有用户使用指南文件(Users_Guide.txt),其中有详细的命令格式和使用示例 $ORACLE_HOME/OPatch/opatch apply $ORACLE_HOME/OPatch/opatch lsinventory
oracle 自动升级工具 MOS Note: 2485457.1 – AutoUpgrade Tool