什么是CPU/PSU

Oracle CPU的全称是Critical Patch Update, Oracle对于其产品每个季度发行一次安全补丁包,通常是为了修复产品中的安全隐患。
Oracle PSU的全称是Patch Set Update,
Oracle对于其产品每个季度发行一次的补丁包,包含了bug的修复。Oracle选取被用户下载数量多,且被验证过具有较低风险的补丁放入到每个季度的PSU中。在每个PSU中不但包含Bug的修复而且还包含了最新的CPU。PSU通常随CPU一起发布。

CPU是累积的(Cumulative),即最新的CPU补丁已经包含以往的CPU补丁,所以只要安装最新的CPU补丁即可。
PSU通常也是增量的,大部分PSU可以直接安装,但有些PSU则必须要求安装了上一 个版本的PSU之后才能继续安装,要仔细看各个PSU的Readme文档。

如何下载CPU/PSU


注意:要下载CPU/PSU,必须要有Oracle Support账号才行!
到Oracle CPU主页 ,可以看到每个季度发布的CPU补丁列表(如下图所示),根据你的需要选择相应的CPU补丁即可,这里选择July2011年的补丁。


每个补丁只针对特定的数据库版本,你要找到对应的数据库版本(如下图所示),这里的数据库版本为11.2.0.1,如果找不到,说明该补丁不支持该版本数据库。


右边点击Database链接,就是该补丁的一个详细说明文档,找到3.1.3 Oracle Database,并点击相应的数据库版本(如下图所示)


在相应的数据库版本里,可以看到各个平台下CPU和PSU版本号,前面已经说过,PSU包含CPU,所以建议尽量安装PSU,注意:这里的UNIX平台也包括Linux


点击上面的版本号,会自动跳到Oracle Support下载页面,如下图所示。选择相应的平台后,点击Readme可以查看Readme文档,点击Download下载

阅读Readme文档


每个CPU/PSU都有一个Readme文档,关于该CPU/PSU的所有信息都在Readme文档里,一定要仔细阅读。
有两个部分要特别注意:
1)OPatch的版本,你可以通过opatch version命令查看Oracle Home当前的OPatch版本,如果低于Readme规定的最低版本,一定要先升级OPatch才能打补丁。
可以参考这篇文章《OPatch - Where Can I Find the Latest Version of OPatch? [Video] [ID 224346.1]》下载最新的OPatch。
2)打Patch步骤:基本上所有的CPU/PSU都大同小异,具体步骤将在下面的例子中展示。

安装CPU/PSU补丁


1)事先检查:查看数据库打补丁前信息,保留现场
在打补丁前最好把数据库的一些基本信息保留下来,以备不时之需。
  1. set line 150
  2. set pagesize 99
  3. col action_time for a30
  4. col action for a30
  5. col comments for a90
  6. col object_name for a30
  7. col object_type for a30
  8. col comp_name for a50
  9. col comp_id for a20
  10. --查看实例名
  11. sys@ORCL>select instance_name,status from v$instance;
  12.  
  13. INSTANCE_NAME STATUS
  14. ---------------- ------------
  15. orcl OPEN
  16. --查看数据库版本
  17. sys@ORCL>select * from v$version;
  18.  
  19. BANNER
  20. --------------------------------------------------------------------------------
  21. Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
  22. PL/SQL Release 11.2.0.1.0 - Production
  23. CORE 11.2.0.1.0 Production
  24. TNS for Linux: Version 11.2.0.1.0 - Production
  25. NLSRTL Version 11.2.0.1.0 - Production
  26. --查看数据库大小
  27. sys@ORCL>select sum(bytes)/1024/1024||'M' from dba_segments;
  28.  
  29. SUM(BYTES)/1024/1024||'M'
  30. -----------------------------------------
  31. 68058.375M
  32. --查看组件信息
  33. sys@ORCL>select COMP_ID,COMP_NAME,VERSION,STATUS from DBA_REGISTRY;
  34.  
  35. COMP_ID COMP_NAME VERSION STATUS
  36. -------------------- -------------------------------------------------- ------------------------------ ----------------------
  37. OWB OWB 11.2.0.1.0 VALID
  38. APEX Oracle Application Express 3.2.1.00.10 VALID
  39. EM Oracle Enterprise Manager 11.2.0.1.0 VALID
  40. AMD OLAP Catalog 11.2.0.1.0 VALID
  41. SDO Spatial 11.2.0.1.0 VALID
  42. ORDIM Oracle Multimedia 11.2.0.1.0 VALID
  43. XDB Oracle XML Database 11.2.0.1.0 VALID
  44. CONTEXT Oracle Text 11.2.0.1.0 VALID
  45. EXF Oracle Expression Filter 11.2.0.1.0 VALID
  46. RUL Oracle Rules Manager 11.2.0.1.0 VALID
  47. OWM Oracle Workspace Manager 11.2.0.1.0 VALID
  48. CATALOG Oracle Database Catalog Views 11.2.0.1.0 VALID
  49. CATPROC Oracle Database Packages and Types 11.2.0.1.0 VALID
  50. JAVAVM JServer JAVA Virtual Machine 11.2.0.1.0 VALID
  51. XML Oracle XDK 11.2.0.1.0 VALID
  52. CATJAVA Oracle Database Java Packages 11.2.0.1.0 VALID
  53. APS OLAP Analytic Workspace 11.2.0.1.0 VALID
  54. XOQ Oracle OLAP API 11.2.0.1.0 VALID
  55.  
  56. 18 rows selected.
  57. --查看补丁情况
  58. sys@ORCL>select ACTION_TIME, ACTION, COMMENTS from sys.DBA_REGISTRY_HISTORY;
  59.  
  60. no rows selected
  61. --查看无效对象
  62. sys@ORCL>select count(*) from dba_objects where status<>'VALID';
  63.  
  64. COUNT(*)
  65. ----------
  66. 123
  67.  
  68. sys@ORCL> select object_name,object_type,owner,status from dba_objects where status<>'VALID';
  69.  
  70. sys@ORCL>spool off

2)备份数据库

这里对全库进行备份,以防打补丁出现意外,可以从备份集中恢复数据。

先关闭监听器,关闭数据库实例,将其启到mount状态,然后用rman进行冷备。

3)备份Oracle软件
把Oracle软件打包备份

4)安装Opatch
  1. --首先,查看当前的OPatch版本
  2. [oracle@data ~]$ opatch version
  3. Invoking OPatch 11.1.0.6.6
  4.  
  5. OPatch Version: 11.1.0.6.6
  6.  
  7. OPatch succeeded.
  8. --如果当前的Opatch版本不够,下载最新的Opatch,覆盖原来的opatch即可
  9. [oracle@data psu_jul_2011]$ unzip p6880880_112000_Linux-x86-64.zip
  10. --unzip之后,在当前文件夹下出现OPatch文件夹
  11. [oracle@data psu_jul_2011]$ mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_20130705
  12. [oracle@data psu_jul_2011]$ cp -r ./OPatch $ORACLE_HOME
  13. [oracle@data psu_jul_2011]$ opatch version
  14. OPatch Version: 11.2.0.3.4
  15.  
  16. OPatch succeeded.

5)安装补丁(Oracle软件部分)
首先,通过opatch lsinventory 查看之前打过的补丁信息。
然后解压缩补丁文件:
  1. [oracle@data psu_jul_2011]$ unzip p12419378_112010_Linux-x86-64.zip
  2. [oracle@data psu_jul_2011]$ cd 12419378

最后在补丁的主目录下执行opatch apply,等待5~10分钟即可(注意:一定要先完全关闭数据库和监听器)

  1. [oracle@data 12419378]$ pwd
  2. /home/oracle/psu_jul_2011/12419378
  3. [oracle@data 12419378]$ opatch apply

如果最后有warnings一般都没什么问题,只要不是error就好。


6)安装补丁(数据库部分)
这步比较简单,就是跑catbundle脚本,但时间比较长,10分钟左右(视机器性能而定)
  1. cd $ORACLE_HOME/rdbms/admin
  2. sqlplus /nolog
  3. SQL> CONNECT / AS SYSDBA
  4. SQL> STARTUP
  5. SQL> @catbundle.sql psu apply
  6. SQL> QUIT

7)重新编译CPU相关视图 (如果是PSU可略过次步骤)

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

  1. SQL> SELECT * FROM registry$history where ID = '6452863';

上面这条语句用于判断是否已经执行过,如果有行数返回,说明已经执行过,可跳过该步骤;

如果没有行数返回,则可根据以下步骤重新编译CPU/PSU相关视图:
  1. cd $ORACLE_HOME/cpu/view_recompile
  2. sqlplus / as sysdba
  3. SQL> @recompile_precheck_jan2008cpu.sql
  4. SQL> SHUTDOWN IMMEDIATE
  5.  
  6. SQL> STARTUP UPGRADE
  7.  
  8. SQL> @view_recompile_jan2008cpu.sql
  9. SQL> SHUTDOWN;
  10. SQL> STARTUP;
  11. SQL> QUIT

8)事后检查

该步骤可以和第1)步的事先检查对照
先编译无效对象:
  1. @?/rdbms/admin/utlrp.sql
  1. set line 150
  2. set pagesize 99
  3. col action_time for a30
  4. col action for a30
  5. col comments for a90
  6. col object_name for a30
  7. col object_type for a30
  8. col comp_name for a50
  9. col comp_id for a20
  10.  
  11. SQL> spool post_check.log
  12. SQL> select instance_name,status from v$instance;
  13. SQL> select COMP_ID,COMP_NAME,VERSION,STATUS from DBA_REGISTRY;
  14. SQL> select ACTION_TIME, ACTION, COMMENTS from DBA_REGISTRY_HISTORY;
  15. SQL> select owner,object_name,object_type,status from dba_objects where status<>'VALID';
  16. SQL> select count(*) from dba_objects where status<>'VALID';
  17. SQL> spool off

[Oracle] CPU/PSU补丁安装教程的更多相关文章

  1. [Oracle] CPU/PSU补丁安装详细教程

    Oracle CPU的全称是Critical Patch Update, Oracle对于其产品每个季度发行一次安全补丁包,通常是为了修复产品中的安全隐患,以下是对CPU/PSU补丁安装的具体操作步骤 ...

  2. [教程]Tensorflow + win10 + CPU + Python3.6+ 安装教程

    由于各种原因,清华镜像源已经彻底挂掉了,但是目前网上的各种教程基本上都是采取设置清华镜像源来加快下载速度,所以这给小白带来了很大的困扰!这里我将通过合理上网工具来直接下载源镜像. 注意:本次教程适用于 ...

  3. Oracle 11g数据库下载安装教程

    今天重装系统之后发现甲骨文的网站变化较大,下载安装废了一点时间,留下个笔记为以后再装留作参考.本教程是win10,64位系统环境下 1.下载 下载的时候需要登陆甲骨文账号,如果没有的话申请一个也挺快. ...

  4. oracle 数据库的详细安装教程

    由于oracle数据库比较大 所以安装的时候比较慢是目前装的最大的软件了吧 而且如果装崩了 可能还会重装系统 不过比较幸运 一次就装好 1.需要去官网下载  https://www.oracle.co ...

  5. 【转】:Oracle Linux6.9下安装Oracle 11.2.0.4.0及psu补丁升级

    为方便截图,本文操作都在vmware虚拟机上完成. 目录: 1.操作系统安装 2.数据库安装 3.PSU补丁升级卸载   part1 操作系统安装 Oracle (Enterprise) Linux ...

  6. Oracle 11.2.0.4 RAC安装最新PSU补丁

    环境:两节点RAC(RHEL 6.4 + GI 11.2.0.4 + Oracle 11.2.0.4) 需求:安装最新PSU补丁11.2.0.4.7 1.下载补丁和最新OPatch 2.检查数据库当前 ...

  7. 【转】Oracle Database PSU/CPU

    转自: http://www.cnblogs.com/ebs-blog/archive/2011/07/28/2167232.html 1. 什么是PSU/CPU?CPU: Critical Patc ...

  8. Oracle Database PSU/CPU

    1. 什么是PSU/CPU?CPU: Critical Patch UpdateOracle对于其产品每个季度发行一次的安全补丁包,通常是为了修复产品中的安全隐患. PSU: Patch Set Up ...

  9. 完整记录一则Oracle 11.2.0.4单实例打PSU补丁的过程

    本文记录了打PSU的全过程,意在体会数据库打PSU补丁的整个过程. 1.OPatch替换为最新版本2.数据库软件应用19121551补丁程序3.数据库应用补丁4.验证PSU补丁是否应用成功 1.OPa ...

随机推荐

  1. 浅谈移动Web开发(上):深入概念

    PPI 什么是PPI PPI的复杂之处在于如果他所属的上下文环境不同,意义也会完全不一样. 当我们在谈论显示设备的PPI时,它代指的屏幕的像素密度:当我们在谈论和图片相关时,我们谈论的是打印时的分辨率 ...

  2. C++ AMP 介绍(两)

    C++ AMP 介绍(两) 最后更新:2014-05-02 读前提:<C++ AMP介绍(一个)> 周边环境:Windows 8.1 64bit英文版,Visual Studio 2013 ...

  3. mysql utf8mb4与emoji表情

    一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里 ...

  4. 正则提取文本中的颜色值 #xxxx,不严谨版本

    不严谨但兼容性最好: #[a-fA-F0-9]+ 增加严谨性: #[a-fA-F0-9]{1,6}

  5. 权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net)

    权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net) 一.前言 至毕业后一直在做企业Web开发,做过的项目也有不少,每个项目的框架设计都不是一样,但是每个项目的权限模 ...

  6. Java 多线程之happens-before规则解释

    关于happens-before规则的解释网上有很多,我就不敢班门弄斧了.贴出两篇不错的文章以供学习. 1.happens-before俗解 2.深入Java内存模型--happen-before规则

  7. WebStorm中Node.js项目配置教程(1)——创建项目

    Node.js绝对是一个web开发的热点话题,作为web神器的WebStorm也是开发Node.js的佼佼者. 接下来就Node.js项目在WebStorm的配置操作就行详细的讲解,首先是创建项目.两 ...

  8. sql 进制转换,支持93内的进制相互转换

    功能:实现在SQL内进制的互相转换,支持从2 - 93进制内的转换,若需要支持其他字符,可以自定义@ym变量实现扩充 -- ====================================== ...

  9. oledb快速导入Excel案例

    DataTable dtImportExcel = null; string pathFile = Server.MapPath("~/ErrorCatory.xlsx"); // ...

  10. grunt实用总结

    grunt实用总结 文章梗概如下: 如何让Grunt在项目跑起来 初识:Gruntfile.js 术语扫盲:task & target 如何运行任务 任务配置 自定义任务 文件通配符:glob ...