Home  >  Article  >  Database  >  allaboutOracleDatabasePSU/CPU

allaboutOracleDatabasePSU/CPU

WBOY
WBOYOriginal
2016-06-07 16:21:27942browse

1. 什么是PSU/CPU? CPU: Critical Patch Update Oracle对于其产品每个季度发行一次的安全补丁包,通常是为了修复产品中的安全隐患。 PSU: Patch Set Updates Oracle对于其产品每个季度发行一次的补丁包,包含了bug的修复。Oracle选取被用户下载数量多的,并

   1. 什么是PSU/CPU?

  CPU: Critical Patch Update

  Oracle对于其产品每个季度发行一次的安全补丁包,通常是为了修复产品中的安全隐患。

  PSU: Patch Set Updates

  Oracle对于其产品每个季度发行一次的补丁包,包含了bug的修复。Oracle选取被用户下载数量多的,并且被验证过具有较低风险的补丁放入到每个季度的PSU中。在每个PSU中不但包含Bug的修复而且还包含了最新的CPU。

  2. 如何查找最新的PSU?

  每个数据库版本都有自己的PSU,PSU版本号体现在数据库版本的最后一位,比如最新的10.2.0.5的PSU是10.2.0.5.3,而11.2.0.2的最新PSU则是11.2.0.2.2。

  MOS站点中Oracle Recommended Patches — Oracle Database [ID 756671.1] 文档中查到各个产品版本最新的PSU。

  如果你记不住这个文档号,那么在MOS中以“PSU”为关键字搜索,通常这个文档会显示在搜索结果的最前面。

  注意:必须购买了Oracle基本服务获取了CSI号以后才有权限登陆MOS站点。

  3. 如何正确安装PSU?

  每个PSU安装包中都包含一个README.html文档,其中描述了如何安装该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命令。

  $ opatch version

  Invoking OPatch 10.2.0.5.2

  OPatch Version: 10.2.0.5.2

  OPatch succeeded.

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

  $opatch apply

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

  cd $ORACLE_HOME/rdbms/admin

  sqlplus / as sysdba

  SQL> STARTUP

  SQL> @catbundle.sql psu apply

  SQL> QUIT

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

  4)重新编译CPU相关视图。该步骤在一个数据库上永远只需要执行一次,是为了完成在2008年1月份第一次发布CPU补丁时的后续工作,如果在安 装以前的PSU或者CPU时执行过这个步骤那么就可以无需再次执行,另外,即使不执行该步骤,数据库也是正常运行的,只不过意味着2008年1月份的 CPU补丁没有正常结束安装。

  cd $ORACLE_HOME/cpu/view_recompile

  sqlplus / as sysdba

  SQL> @recompile_precheck_jan2008cpu.sql

  SQL> SHUTDOWN IMMEDIATE

  SQL> STARTUP UPGRADE

  SQL> @view_recompile_jan2008cpu.sql

  SQL> SHUTDOWN;

  SQL> STARTUP;

  SQL> QUIT

  注意:该步骤由于需要重新编译大量视图,因此要启动数据库到upgrade状态才可以完成。也就是将引起停机时间。

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

  无论是从V$VERSION或者DBA_REGISTRY或者PRODUCT_COMPONENT_VERSION视图中,都无法查找到PSU的信息,这些视图中始终显示的是最原始的版本,比如10.2.0.4.0。

  最常用的方法是使用opatch命令。在打完最新的PSU 10.2.0.4.8的10.2.0.4数据库中会有以下显示。

  $ opatch lsinventory -bugs_fixed | grep -i 'DATABASE PSU'

  9654991 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.5 (REQUIRES PRE-REQUISITE

  9952234 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.6 (REQUIRES PRE-REQUISITE

  10248636 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.7 (REQUIRES PRE-REQUISITE

  11724977 11724977 Wed May 25 16:37:17 CST 2011 DATABASE PSU 10.2.0.4.8 (REQUIRES PRE-REQUISITE

  8576156 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.1 (INCLUDES CPUJUL2009)

  8833280 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.2 (INCLUDES CPUOCT2009)

  9119284 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.3 (INCLUDES CPUJAN2010)

  9352164 9352164 Wed May 25 15:10:48 CST 2011 DATABASE PSU 10.2.0.4.4 (INCLUDES CPUAPR2010)

  另外的方法是查看registry$history表。

  SQL> select action,comments from registry$history;

  ACTION COMMENTS

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

  APPLY PSU 10.2.0.4.4

  APPLY PSU 10.2.0.4.8

  CPU view recompilation

  注意:该表的内容是在上述安装PSU步骤的第三步中运行catbundle.sql才会插入的,因此如果该步骤忘记执行,则此表中无记录。因此我们在作数据库健康检查的时候不但要用opatch检查当前数据库最新的PSU补丁,也要检查registry$history表,以确认其它DBA是否正确地完成了PSU的安装。

  如果多个PSU的安装都忘记了执行上述第三步,可以通过以下方法依次补作。

  $ ls -l $ORACLE_HOME/psu

  total 0

  drwxrwxrwx 2 oracle dba 96 Oct 16 2010 10.2.0.4.4

  drwxrwxrwx 2 oracle dba 96 Oct 16 2010 10.2.0.4.5

  $sqlplus / as sysdba

  SQL> @?/psu/10.2.0.4.4/catpsu.sql

  SQL> @?/psu/10.2.0.4.5/catopsu.sql

  更多关于CPU的信息,可以参看:Maclean的了解Oracle Critical Patch Update。

  5. 参考文档。

  Oracle Recommended Patches — Oracle Database [ID 756671.1]

  Patch Set Updates for Oracle Products [ID 854428.1]

  Introduction To Oracle Database catbundle.sql [ID 605795.1]

  How to confirm that a Critical Patch Update (CPU) has been installed in Linux / UNIX [ID 821263.1]

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn