前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试855】在Oracle中,简单说说PSU升级的过程

【DB笔试面试855】在Oracle中,简单说说PSU升级的过程

作者头像
小麦苗DBA宝典
发布2020-08-13 09:41:04
5460
发布2020-08-13 09:41:04
举报

问题

在Oracle中,简单说说PSU升级的过程.

答案

首先需要了解一些有关PSU(Patch Set Update)、CPU(Critical Patch Update)、BP(Bundle Patch)等概念,参考下表:

表 3-37 PSU、CPU、BP等概念

名称

说明

Release

标准产品发布。例如,Oracle 10gR2的第一个发行版本为10.2.0.1,可以在OTN、edelivery等站点上公开下载。

Patch Set Release

就是早期常说的PSR。这是在主版本号上发布的补丁集,修复了较多的Bug,可能会包含一些增强功能(Enhancement)。例如11.2.0.1是一个主版本,那么11.2.0.2、11.2.0.3就是2个不同的Patch set。这种补丁集经过了严格的集成测试,也是累积型的。所以,推荐安装最新的Patch Set。

Patch Set Update

就是DBA常说的PSU(补丁集更新)。Oracle选取在每个季度用户下载数量最多,并且得到验证具有较低风险的补丁放入到每个季度的PSU中,修复比较严重的一些问题,包含每个季度的CPU,是累积型的。虽然在描述PSU的时候会用到数据库版本第5位,比如Database PSU 11.2.0.3.5,但实际上打完PSU后并不会真正改变数据库的版本,从V$VERSION中看到的版本还是4位的(11.2.0.3.0),第5位仍然是0。需要注意的是:(1)Windows上没有CPU和PSU,对于Windows和Exadata,Oracle使用Bundle Patch代替PSU,Bundle Patch会包含PSU的内容。(2)从11.2.0.2版本开始,一个新的补丁策略被引入,11.2.0.1之后发布的Patch Set本身就是一个完整的安装包,不再需要基础的Release 版本安装。

Critical Patch Update

这个指的就是CPU补丁。每季度发布一次,用来修复安全方面的一些补丁,是累积型的。现已经更名为Security Patch Update(SPU),这类问题本来不属于软件错误,在正常使用中不会出现任何问题。但是别有用心的人可以通过运行非常精巧设计的代码,绕过数据库系统的安全管理机制,达到非授权存取的目的。

Interim Patch/One-OffPatch

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

Merged Patch

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

Bundle Patch(BP)

Oracle在Windows平台上没有小补丁,只有这种Bundle Patch。这种累积型的补丁集会周期性的发布(至少每季一次),也就是每个Bundle Patch会包含之前所有的Bundle Patch。比如Windows Bundle Patch 16,它会包含之前所有15个Bundle Patch,所以,总是推荐安装最新的Bundle Patch。Oracle的集群软件和数据库软件的Window Bundle Patch是同一个,比如Windows Bundle Patch 16(补丁号16167942,既可以打在集群上,也可以打在数据库上)。

Diagnostic Patch

诊断补丁。顾名思义,这类补丁不是用来解决问题的,而是用来寻找问题的原因的。这类补丁只在Oracle技术支持部门要求安装时,才需要安装。在得到需要的诊断信息后,应立即卸载这一补丁。

Composite Patches

从2012年4月份的Database PSU 11.2.0.3.2和11.2.0.2.0.7开始,推出一种新的概念叫Composite Patches。这是一种新型的补丁包,它不同于其它的累积型补丁包。如果是第一次安装Composite Patches,那么该Composite Patches所包括的全部补丁都会被安装,后续安装的Composite Patches,只会安装对比前一次Composite Patches有变化的部分和新增加的补丁。

可以参考下面的MOS文档了解每个季度的CPU、PSU、Windows Bundle Patch的具体补丁号:

l Note 1454618.1 Quick Reference to Patch Numbers for Database PSU, SPU(CPU), Bundle Patches and Patchsets

l 数据库PSU,SPU(CPU),Bundle Patches和Patchsets补丁号码快速参考(文档 ID 1922396.1)

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

注意:目前都使用文档2118136.2,而文档1454618.1也会自动的跳跃到2118136.2。

1.如何查找最新的PSU?

每个数据库版本都有自己的PSU,PSU版本号体现在数据库版本的最后一位,例如11.2.0.3.5,则PSU是5,MOS站点中Oracle Recommended Patches — Oracle Database [ID 756671.1]文档中可以查到各个产品版本最新的PSU。如果记不住这个文档号也没关系,可以在MOS中以“PSU”为关键字搜索,那么通常这个文档会显示在搜索结果的最前面。需要注意的是,必须购买了Oracle基本服务获取了CSI(Customer Support Identifier,客户支持号)以后才有权限登陆MOS站点。

2.如何确认当前数据库已经安装了什么PSU?

通过命令opatch lspatches可以看到安装的PSU版本,如下例子即安装了11.2.0.4版本的PSU4。

也可以通过如下的SQL语句进行查询:

代码语言:javascript
复制
COL ACTION_TIME   FOR A30
COL ACTION       FOR A10
COL NAMESPACE     FOR A10
COL VERSION       FOR A10
COL BUNDLE_SERIES FOR A10
COL COMMENTS    FOR A30

SELECT TO_CHAR(ACTION_TIME, 'YYYY-MM-DD HH24:MI:SS') ACTION_TIME,
       ACTION,
       NAMESPACE,
       VERSION,
       ID,
       BUNDLE_SERIES,
       COMMENTS
  FROM DBA_REGISTRY_HISTORY D;

3.如何安装PSU?

每个PSU安装包中都包含一个README.html或README.TXT文档,其中,描述了如何安装该PSU,有些PSU是可以直接安装的,而有些PSU则必须要求安装了上一个版本的PSU之后才能继续安装。例如对于10.2.0.4版本的数据库来说,PSU 10.2.0.4.4可以直接安装在最原始的10.2.0.4.0版本中,而最新的PSU 10.2.0.4.8则必须要求先安装10.2.0.4.4。这些信息在README.html中都可以找到,所以,请仔细阅读该文档。

通常安装PSU是比较简单的,步骤如下:

1) 安装PSU需要使用到opatch,在README.html中有描述该PSU需要的最低版本opatch。如果当前opatch版本过低,那么需要先下载Patch 6880880,该Patch中包含最新的opatch,只需要解压覆盖原先的$ORACLE_HOME/OPatch目录即可。

查看当前的opatch版本,可以使用opatch version命令。

代码语言:javascript
复制
[oracle@OCPLHR 12834800]$ opatch version
Invoking OPatch 11.2.0.1.7

OPatch Version: 11.2.0.1.7

OPatch succeeded. 

2)安装PSU,请仔细阅读README.html,确认安装命令,通常是简单的opatch apply。

代码语言:javascript
复制
$opatch apply

3)更新数据库,将修改过的SQL文件应用到数据库中,很多DBA在执行完上述安装命令以后就不再进行这一步,那么实际上PSU是没有完整安装的:

代码语言:javascript
复制
sqlplus / as sysdba
SQL> STARTUP
SQL> @$ORACLE_HOME/rdbms/admin/catbundle.sql psu apply
SQL> QUIT

注意:如果PSU是overlay PSU,比如10.2.0.4.8,那么需要执行@catbundle.sql opsu apply,同样这些在README.html中都有详细描述。

4.Upgrade与Update

upgrade表示版本升级,update表示补丁包升级。

例如,当前数据库是10gR2版本,但公司最近有个升级计划,把这套数据库升级到11gR2,这种大版本间升级动作即为Upgrade。根据公司计划在原厂工程师和DBA共同努力下,数据库已升级到11GR2,当下版本为11.2.0.3.0。这时候原厂工程师推荐打上最新的PSU,所以,又把数据库进行补丁包的升级,应用了PSU Patch14727310之后,数据库版本现在成为11.2.0.3.5,这个过程即是Update。

5.注意问题

当前Oracle数据库提供两种方式的补丁集,一种是主动补丁集(Proactive Patches)和另一种被动补丁集(Reactive Patches),其中Reactive Patches是指one-off patch,而PSU、SPU、CPU、BP都属于Proactive Patches。从Oracle 12c(12.1.0.2)起数据库又提供了一个名为DBBP(Database Proactive Bundle Patch)的补丁类型,在数据库安装选择补丁时建议是PSU、CPU、DBBP中的一种,在12c以前至少是安装相应版本的PSU,而从12.1.0.2起想要安装更全的补丁集应该选择DBBP,DBBP更是一种趋势,以后可能会替代PSU,就像以前的CPU后改名为SPU,安装SPU建议以PSU的方式一样,DBBP成了更大的超集。

& 说明:

有关PSU更具体的操作过程可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2101673/、http://blog.itpub.net/26736162/viewspace-2096650/

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

代码语言:javascript
复制
DB宝分享的IT资料:https://mp.weixin.qq.com/s/Iwsy-zkzwgs8nYkcMz29ag

● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用

● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档