[转帖]Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍

Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍

原文:http://blog.csdn.net/tianlesoftware/article/details/5809526

其实 原始blog 比较早了 应该是六年前的内容了 但是感觉还是挺好的

自己公司的产品暂时没做到这样 

但是存在一个问题, 一个是 云转型 一个是 原始的monolith  的应用 的区别对待

其实 认为不管是micro service 还是 monolithic 的应用 其实都是差不多的东西.  简单已容易交付 永远是最优秀的选择. 

一. CPU(Critical Patch Update)

一个CPU内包含了对多个安全漏洞的修复,并且也包括相应必需的非安全漏洞的补丁。CPU是累积型的,只要安装最新发布的CPU即可,其中包括之前发布的所有CPU的内容。事实上,在CPU之前的安全漏洞修改除去个别例外也被包括在CPU中。Oracle公司只对处于标准技术支持和延长支持期间的产品提供CPU更新,对处于维持支持范围的产品不提供新的CPU.(对于9.2以前的版本,只对处于ECS和EMS期间的版本提供CPU更新。)

一般对当前补丁发行版及前一个版本提供CPU,但也有只限于当前补丁发行版的例外情形。也就是说,一般需要先安装最新PSR后才可能安装CPU.由于是累积型的定期发布,所以对于某一平台的某一版本,如果两次CPU发布期间没有发现新的安全漏洞,则新发布的CPU与前一版本完全相同。

可以在以下网址中可以找到CPU发布的信息,只要在Oracle 免费注册一个用户,就可以收到这些补丁的信息。但是,只有技术支持签约用户才可以从metalink下载补丁文件。

http://www.oracle.com/technology/deploy/security/alerts.htm

Oracle公司制定的CPU的发布日期大约在一月、四月、七月和十月的最接近15的星期二。

Critical Patch Updates

Critical Patch Updates are the primary means of releasing security fixes for Oracle products to customers with valid support contracts. They are released on the Tuesday closest to the 15th day of January, April, July and October. Starting 2011, the scheduled dates for the release of Critical Patch Updates will be on the Tuesday closest to the 17th day of January, April, July and October. The next four dates are:

12 October 2010

18 January 2011

19 April 2011

19 July 2011

对于每一个CPU,附有相应的说明文档(Critical Patch Update Note),其中介绍安装过程和注意事项,在安装之前应认真阅读此文档。同样也存在文档“Oracle Critical Patch Update MM YYYY Known Issues for Oracle Database”,其中列出了说明文档中没有给出的新信息。

二.PSR(Patch Set Release) 和 PSU(Patch Set Update)

8i,9i,10g,11g这是其主要版本号,每一版本会陆续有两至三个发行版,如10.1,10.2,和 11.1,11.2分别是10g和11g的两个发行版。对于每一个发行版软件中发现的BUG,给出相应的修复补丁。每隔一定时期,会将所有补丁集成到软件中,经过集成测试后,进行发布,也称为PSR(Patch Set Release)。以10.2为例,10.2.0.1.0是基础发行版,至今已有三个PSR发布,每个PSR修改5位版本号的第4位,最新10.2的PSR为10.2.0.4.0。(11.1.0.6.0是11.1的基础发行版,11.1.0.7.0是第一次PSR) 。

在某个PSR之后编写的补丁,在还没有加入到下一个PSR之前,以个别补丁(Interim Patch)的形式提供给客户。某个个别补丁是针对Oracle公司发现的或客户报告的某一个BUG编写的补丁,多个个别补丁之间一同安装时可能会有冲突,即同一个目标模块分别进行了不同的修改。另外,即便在安装时没有发现冲突,由于没有进行严格的集成测试,运行过程中由于相互作用是否会发生意外也不能完全排除。

除去修改功能和性能BUG的补丁,还有应对安全漏洞的安全补丁。Oracle公司定期(一年四期)发布安全补丁集,称之为CPU(Critical Patch Updates)。

由于数据库在信息系统的核心地位,对其性能和安全性的要求非常高。理应及时安装所有重要补丁。另外一个方面,基于同样的理由,要求数据库系统必须非常稳定,安装补丁而导致的系统故障和性能下降同样不可接受。DBA经常面临一个非常困难的选择:对于多个修复重要BUG的个别补丁是否安装。不安装,失去预防故障发生的机会,以后故障发生时,自己是无作为;安装,如果这些补丁中存在着倒退BUG,或者相互影响,以后发生由于安装补丁而造成的故障时,自己则是无事生非!而等待下一个PSR,一般又需要一年时间。因此,出现了PSU(Patch Set Update)。

PSU解决以下几个问题:

1. 减轻PSR周期长而带来的不能及时更新的影响;

2. 解决多个个别补丁冲突和相互影响的问题;

3. 减轻DBA安装补丁的负担:补丁安装次数,不定期检查补丁发布。

PSU具有如下特点:

第一、PSU是PSR的补充,在两次PSR发布之间发布多个PSU,加快更新速度。每个PSU修改5位版本号的第5位。例如,安装此次发布的 PSU后,11.1版本“升级”为11.1.0.7.1;10.2版本为10.2.0.4.2。

第二、每个PSU中包含25至100个重要补丁,作为一个整体进行严格测试,解决冲突问题,保证系统的稳定性。PSU不仅包括对功能、性能修复的一般补丁,也包括安全补丁。

第三、PSU定期发布,计划一年分布四次,发布日期与CPU发布日期相同。由于PSU包括同期发布的CPU,只要安装PSU即可。(对部分平台,仍提供单独的CPU,供客户选择)

第四、如同PSR和CPU一样,PSU是累积型的,即只要安装最新的PSU就自动包括以前所有PSU的内容。

第五、使用DBA已经熟悉的Opatch工具安装/删除PSU,命令仍是apply和rollback。一个PSU可视作一个个别补丁,安装和删除操作都很简便。

第六、现有的个别补丁与PSU的关系分为三类:完全独立;是PSU的一部分;与PSU冲突。

第一类的个别补丁与PSU相互没有影响,可以独立的安装或删除。对于第二类,在安装PSU之后,自然没有必要安装。若在PSU之前已安装,则在安装PSU时会被自动删除。对于第三类个别补丁,如在PSU之前已安装,必须在安装PSU时删除。客户可以向Oracle公司技术支持部门提出申请,由Oracle负责提供与PSU不冲突的,在PSU之上安装的相应的新的版本。

PSU的限制:必须是在正常技术支持范围之内的版本(11.2、11.1和10.2),并且PSU只能在最新PSR之上安装。

三. OPatch 命令

先看一个官网的Oracle OPatch 的说明:

Oracle Software Patching Using Opatch

http://download.oracle.com/docs/cd/B19306_01/em.102/b16227/oui8_opatch.htm

从9.2版开始,Oracle公司实现了个别补丁安装工具opatch. opatch使用一个称为inventory的系统数据结构(严格说是与oui共享inventory),集中管理所有已安装的个别补丁;个别补丁的安装和卸载都使用opatch命令完成,冲突检测也由opatch在安装时自动完成;提供列表命令可以很方便得到已安装个别补丁的信息。

10g(10.1和10.2)版本中,opatch作为一个标准工具,在安装时自动安装。(安装在$ORACLE_HOME/OPatch下。)而对于9.2版,需要从metalink下载opatch.无论是哪一个版本,系统中是否已经安装opatch,在使用之前,应从metalink下载最新版本的opatch.很遗憾,由于系统实现的问题,10.2使用的opatch与之前版本(10.1和9.2)使用的opatch不兼容,不能混用,这一点必须注意。

opatch是使用perl编写的脚本程序(其中也使用JAVA API)。使用的perl版本是5.6版,虽然在5.6之前的版本中也可运行,但应尽可能安装5.6或以上的版本的perl.对于DBA来说一个好消息是,如果安装9.2版软件时保留了HTTP服务器,则在$ORACLE_HOME/Apache下会自动安装perl.(10g会自动安装配置perl和opatch.)

3.1    opatch命令存放位置

该命令的存放位置在$ORACLE_HOME下的OPatch目录下。
-bash-3.2$ pwd

/u01/oracle/oracle/product/10.2.0/db_1/OPatch

-bash-3.2$ ls

docs  emdpatch.pl  jlib  opatch  opatch.ini  opatch.pl

-bash-3.2$ ls -lrt

total 44

-rw-r--r-- 1 oracle oinstall 18107 Apr 18  2005 emdpatch.pl

-rw-r--r-- 1 oracle oinstall  2193 Jun  1  2005 opatch.pl

-rwxr-xr-x 1 oracle oinstall  5672 Jun  1  2005 opatch

drwxr-x--- 2 oracle oinstall  4096 Apr 21 13:24 jlib

drwxr-x--- 2 oracle oinstall  4096 Apr 21 13:24 docs

-rw-r--r-- 1 oracle oinstall    49 Apr 21 13:24 opatch.ini

3.2    使用“-help”参数可以获得opatch命令的帮助信息

-bash-3.2$ ./opatch --help

Invoking OPatch 10.2.0.1.0

Oracle interim Patch Installer version 10.2.0.1.0

Copyright (c) 2005, Oracle Corporation.  All rights reserved..

Oracle Home       : /u01/oracle/oracle/product/10.2.0/db_1

Central Inventory : /u01/oracle/oraInventory

from           : /u01/oracle/oracle/product/10.2.0/db_1/oraInst.loc

OPatch version    : 10.2.0.1.0

OUI version       : 10.2.0.1.0

OUI location      : /u01/oracle/oracle/product/10.2.0/db_1//oui

Log file location : /u01/oracle/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch-2010_Aug_09_03-05-40-CST_Mon.log

Usage: opatch [ -help ] [ -r[eport] ] [ command ]

command := apply

lsinventory

query

rollback

version

<global_arguments> := -help       Displays the help message for the command.

-report     Print the actions without executing (deprecated).

example:

‘opatch -help‘

‘opatch apply -help‘

‘opatch lsinventory -help‘

‘opatch rollback -help‘

OPatch succeeded.

这个是10.2.0.1版本的opatch. 在10.2.0.4 版本的opatch命令与之前的又不同,它有添加了几个命令。

-bash-3.2$ ./opatch --help
Invoking OPatch 11.1.0.6.6
Oracle Interim Patch Installer version 11.1.0.6.6
Copyright (c) 2009, Oracle Corporation.  All rights reserved.

Usage: opatch [ -help ] [ -r[eport] ] [ command ]
            command := apply
                       lsinventory
                       napply
                       nrollback
                       rollback
                       query
                       version
                       prereq
                       util
 <global_arguments> := -help       Displays the help message for the command.
                       -report     Print the actions without executing.

example:
   ‘opatch -help‘
   ‘opatch apply -help‘
   ‘opatch lsinventory -help‘
   ‘opatch napply -help‘
   ‘opatch nrollback -help‘
   ‘opatch rollback -help‘
   ‘opatch prereq -help‘
   ‘opatch util -help‘

OPatch succeeded.

官网上对命令的一些解释:


apply


Installs an interim patch. Refer to "apply Command" for more information.


napply


Installs n number of patches (hence napply). Refer to "napply Command" for more information.


auto


Applies Oracle Clusterware patches. Refer to "auto Command" for more information.


lsinventory


Lists what is currently installed on the system. Refer to "lsinventory Command" for more information.


query


Queries a given patch for specific details. Refer to "query Command" for more information.


rollback


Removes an interim patch. Refer to "rollback Command" for more information.


nrollback


Removes n number of patches (hence nrollback). Refer to "nrollback Command" for more information.


version


Prints the current version of the patch tool. Refer to "version Command" for more information.

在$ORACLE_HOME/OPatch/docs目录下,用指南文件(Users_Guide.txt),其中有详细的命令格式和使用示例,可以参考。

Opatch执行操作时,除在屏幕输出结果外,还生成日志文件。日志文件的路径和文件名格式如下:

$ORACLE_HOME/.patch_storage/< patch_id >/< action >-< patch_id >_< mm-dd-yyyy_hh-mi-ss>.log

其中“patch_id”是Oracle技术支持部门为个别补丁分配的编号。

3.3  opatch安装个别补丁示例:

以Patch 5689937 为例。

3.3.1  patch下载

从metalink下载补丁的压缩文件p5689937_10201_LINUX.zip.将此文件解压缩至某一目录中。解压缩后,这一补丁的所有文件都在子目录5689937下,目录名就是个别补丁的补丁号,opatch依据目录名获得信息,所以一定不要重命名子目录。

3.3.2  安装patch

进入patch文件5689937 目录,在patch的目录下面有一个readme的安装文档,里面有安装步骤和一些问题的处理方法。

3.3.2.1 关闭数据库和监听

Shut down all instances and listeners associated with the Oracle home that you are updating.

3.3.2.2. 进入patch目录,运行opatch apply命令

-bash-3.2$ cd p5689937_10201_LINUX/

-bash-3.2$ ls

5689937  patchmd.xml  README.html

-bash-3.2$ cd 5689937/

-bash-3.2$ ls

custom  etc  files  README.txt

-bash-3.2$ pwd

/mnt/p5689937_10201_LINUX/5689937

-bash-3.2$ export PATH=$PATH:/usr/ccs/bin

-bash-3.2$ $ORACLE_HOME/OPatch/opatch apply

3.3.2.3 启动实例,运行相关脚本

-bash-3.2$ cd $ORACLE_HOME/cpu/CPUJan2007/   -- 要进入这个目录才能找到脚本

-bash-3.2$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Aug 9 04:48:19 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area  281018368 bytes

Fixed Size                  1218968 bytes

Variable Size              83887720 bytes

Database Buffers          192937984 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

SQL> @catcpu.sql

如果catcpu.sql 脚本报任何无效对象,执行如下脚本:

SQL> @?/rdbms/admin/utlrp.sql

可以用如下SQL 检查无效对象:

SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS= ‘INVALID‘;

3.3.3 用inventory 命令查看已经安装的patch

-bash-3.2$  $ORACLE_HOME/OPatch/opatch lsinventory

Invoking OPatch 10.2.0.1.0

Oracle interim Patch Installer version 10.2.0.1.0

Copyright (c) 2005, Oracle Corporation.  All rights reserved..

Oracle Home       : /u01/oracle/oracle/product/10.2.0/db_1

Central Inventory : /u01/oracle/oraInventory

from           : /u01/oracle/oracle/product/10.2.0/db_1/oraInst.loc

OPatch version    : 10.2.0.1.0

OUI version       : 10.2.0.1.0

OUI location      : /u01/oracle/oracle/product/10.2.0/db_1//oui

Log file location : /u01/oracle/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch-2010_Aug_09_04-55-55-CST_Mon.log

Lsinventory Output file location : /u01/oracle/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory-2010_Aug_09_04-55-55-CST_Mon.txt

--------------------------------------------------------------------------------

Installed Top-level Products (1):

Oracle Database 10g                                                  10.2.0.1.0

There are 1 products installed in this Oracle Home.

Interim patches (1) :

Patch  5689937      : applied on Mon Aug 09 04:43:27 CST 2010

Created on 8 Jan 2007, 11:48:31 hrs US/Eastern

Bugs fixed:

4671216, 4925103, 4604970, 4616376, 5689937, 4288876, 5225798, 5694720

4754888, 4750469, 4369235, 4751931, 4966716, 5049080, 5242648, 4348230

5490846, 4630549, 5490936, 5049088

--------------------------------------------------------------------------------

OPatch succeeded.

或者用$ORACLE_HOME/OPatch/opatch lsinventory –detail 命令查看详细。

3.4  卸载 opatch

3.4.1 关闭实例和监听

SQL> shutdown immediate

3.4.2 执行opatch命令

-bash-3.2$ cd $ORACLE_HOME/OPatch/

-bash-3.2$ ./opatch rollback -id 5689937

3.4.3  启动实例,执行catcpu_rollback.sql脚本

-bash-3.2$ cd $ORACLE_HOME/cpu/CPUJan2007/

-bash-3.2$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Aug 9 05:04:19 2010

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area  281018368 bytes

Fixed Size                  1218968 bytes

Variable Size             109053544 bytes

Database Buffers          167772160 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

SQL> @catcpu_rollback.sql   -- 这个脚本在patch的安装目录里也有

如果在运行中出现无效对象,运行如下脚本:

SQL> @?/rdbms/admin/utlrp.sql

检查无效对象:

SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS = ‘INVALID‘;

关于Patch的说明就到此。 在后说明一点。 有时我们的生产库遇到一个问题,但是又不能十分确定是否是某个bug的时候,可以先考虑打patch看一下,如果解决了更好,如果不能解决,把patch删掉即可。 这样可以把问题控制在可控的范围内,避免把问题扩大化。

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/10754214.html

时间: 2024-11-05 14:55:26

[转帖]Oracle 补丁体系(PSR/PSU/CPU) 及 opatch 工具 介绍的相关文章

转://Oracle补丁及opatch工具介绍

一. CPU(Critical Patch Update) 一个CPU内包含了对多个安全漏洞的修复,并且也包括相应必需的非安全漏洞的补丁.CPU是累积型的,只要安装最新发布的CPU即可,其中包括之前发布的所有CPU的内容.事实上,在CPU之前的安全漏洞修改除去个别例外也被包括在CPU中.Oracle公司只对处于标准技术支持和延长支持期间的产品提供CPU更新,对处于维持支持范围的产品不提供新的CPU.(对于9.2以前的版本,只对处于ECS和EMS期间的版本提供CPU更新.) 一般对当前补丁发行版及

[转帖]oracle补丁类型

https://www.cnblogs.com/liang545621/p/9417919.html 介绍挺好的 跟现在的也比较类似呢. 名称 说明 Release ¤ 标准产品发布.如Oracle Database 10g Release 2的第一个发行版本为10.2.0.1,可以在OTN.edelivery等站点上公开下载 Patch Set Release ¤ 就是早期大家常说的PSR.这是在主版本号上发布的补丁集,修复了较多的Bug,可能会包含一些增强功能(Enhancement).比如

Oracle 补丁那些事儿(PS、PSU、CPU、SPU、BP、DBBP…)

当前ORACLE数据库提供两种方式的补丁一种是主动的Proactive Patches和另一种被动的Reactive Patches,其中Reactive Patches是指过去的ONE-OFF Patch,而过去的PSU,SPU/CPU,BP都是Proactive Patches.从12c(12.1.0.2)起数据库又提供了一个名为DBBP的补丁类型,在数据库安装选择补丁时建议是PSU,CPU,DBBP中的一种,在12c以前至少是安装相应版本的PSU,而从12.1.0.2起想要安装更全的补丁集

【转】Oracle Database PSU/CPU

转自: http://www.cnblogs.com/ebs-blog/archive/2011/07/28/2167232.html 1. 什么是PSU/CPU?CPU: Critical Patch UpdateOracle对于其产品每个季度发行一次的安全补丁包,通常是为了修复产品中的安全隐患. PSU: Patch Set UpdatesOracle对于其产品每个季度发行一次的补丁包,包含了bug的修复.Oracle选取被用户下载数量多的,并且被验证过具有较低风险的补丁放入到每个季度的PS

Oracle Database PSU/CPU

1. 什么是PSU/CPU?CPU: Critical Patch UpdateOracle对于其产品每个季度发行一次的安全补丁包,通常是为了修复产品中的安全隐患. PSU: Patch Set UpdatesOracle对于其产品每个季度发行一次的补丁包,包含了bug的修复.Oracle选取被用户下载数量多的,并且被验证过具有较低风险的补丁放入到每个季度的PSU中.在每个PSU中不但包含Bug的修复而且还包含了最新的CPU. 2. 如何查找最新的PSU?每个数据库版本都有自己的PSU,PSU版

Oracle 12c RAC安装PSU(12.1.0.2.161018)

一.准备工作 1,数据库环境 操作系统版本   : Redhat 6.8 x64   数据库版本     : Oracle 12.1.0.2 x64 RAC    Grid           : 12.1.0.2     Oracle database: 12.1.0.2 2,准备内容 GI PSU : p24412235_121020_Linux-x86-64.zip   OPatch : p6880880_122010_Linux-x86-64.zip    DB PSU : p24006

Oracle补丁术语介绍

在使用Oracle的技术支持服务的时候,经常会遇到补丁相关的术语.现在对这些术语做些解释说明: Interim patch/One-off patch:是我们常说的小补丁,为了修复某(几)个Bug而发布的补丁.这种补丁推荐在测试库上测试无误后再安装在生产库上. Merged patch: 合并的补丁.当几个小补丁之间有冲突,不能同时安装的时候,需要提供这种Merged Patch.补丁冲突主要是由于2个或者多个补丁修改同一个文件,但是修改的内容是不同的. Bundle patch:补丁集,修复多

[转帖]Oracle 12cR2使用经验

大规模升级来临,谈谈Oracle 12cR2使用经验 随着2019年2月13日,Oracle 19c (Oracle 12.2.0.3) for Exadata 版本发布,Oracle 12cR2体系的数据库版本终于迎来了长期支持版本(Oracle 12c的最后一个大版本),也就是说数据库版本还在Oracle 10g/11g的系统是时候考虑升级了. http://database.51cto.com/art/201904/595040.htm Oracle12c 的最终版本发布了 以后升级的用户

Oracle 12c 单机安装PSU(12.1.0.2.161018)

一.准备工作 1,数据库环境 操作系统版本   : Redhat 7.1 x64   数据库版本     : Oracle 12.1.0.2 x64     Oracle database: 12.1.0.2 2,准备内容 OPatch : p6880880_122010_Linux-x86-64.zip   DB PSU : p24006101_121020_Linux-x86-64.zip 仅oracle12c单机使用. 二.更新OPatch 说明:更新database OPatch版本.