Oracle patch也即是Oracle补丁。Oracle补丁又包含好几个种类,小的补丁简直是难以数计,难免让人眼花缭乱。尽管如此,Oracle patch还是有序可循的。而且Oracle提供的opatch工具非常方便的用于安装oracle patch,以及查看当前系统已经安装的patch。本文列出了patch的几种类型,以及主要描述通过opatch工具查看当前数据库的patch应用的情况。对于如何apply patch可参考Oracle官方文档。
1、Oracle patch类型
One-off patches (e.g. a bug fix)
One-off patches也称之为一次性补丁,通常针对特定的版本数据库或运行平台。此类补丁通常较小,使用的最为频繁
One-off patch只需要用Opatch工具apply即可,不需要升级/修正数据字典
如在数据库使用过程中出现某些异常后如较常见的ORA-00600、ORA-07445错误等可以通过一次性补丁来搞定
Critical Patch Update (CPU)
简称CPU,一般来说CPU包含了Oracle产品安全漏洞的修复补丁集(set of security bug fix),通常一年发布四期
该类patch的安装和安装one-off patch一样,同样使用”opatch apply”命令来完成
安装完成后应针对既有的数据库(已经创建在使用的数据库),应在数据库级别运行数据字典升级脚本
Bundled patches (For Windows and Exadata only)
用于解决在Windows平台无法利用替换共享库文件后relink的方式来更新Oracle binary,所以Oracle特别针对Windows发布区别于Unix上Normal/Molecular CPU的CPU Bundle patch
通常情况下,Bundle Patch会别较大,Windows bundle patches通常每一个季度都会发布
PSR(Patch Set Release)/Patch Set Update(PSU)
PSR就是大家常见的大补丁合集,通常1GB左右,也就是oracle版布号的第四位即为PSR号。也就是说oracle版布号的第四位会被修改
每一个PSR是都整合了之前的一些bug,并且经过了严格的测试,通常更新PSR风险相对较小
如10.2,10.2.0.1.0是基础发行版,至今已有五个PSR发布,最新10.2的PSR为10.2.0.5.0
PSU就是在每个PSR发布之间的补丁,由于新旧PSR之间周期较长,而数据库在运行期间难以保证不会出现新的bug,因此有了PSU
PSU是对于PSR的一个重要补充,每个PSU修改5位版本号的第5位。如,11.1版本升级为11.1.0.7.1;10.2版本为10.2.0.4.2
PSU与CPU一样,定期发布,计划一年发布四次,发布日期与CPU发布日期相同。由于PSU包括同期发布的CPU,只要安装PSU即可
PSU同样使用Opatch工具安装/删除,命令仍是apply和rollback。一个PSU可视作一个个别补丁,安装和删除操作同样简便
2、opatch工具
- Oracle 为我们提供了用于patch安装、回退、管理与追踪的工具opatch,该工具为命令行工具,简单易用,可以根据opatch的帮助命令来获取帮助信息
- #获得opatch的帮助信息
- [oracle@linux1 OPatch]$ ./opatch -help
- Invoking OPatch 11.1.0.6.6 #opatch的版本
- 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 #安装patch
- lsinventory #查看所有已安装的patch
- napply #用于Apply a set of patches at a time
- nrollback #用于Rollback a set of patches at a time
- rollback #Rollback an existing one-off patch indicated by the reference-id
- query
- version
- prereq #用于检查安装patch之前的先决条件
- 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.
- #下面查看oracle 10g下的补丁信息,对于如何安装补丁,本文不作演示
- oracle@M10DB01p:/users/oracle/OraHome10g/OPatch> ./opatch lsinventory
- Invoking OPatch 10.2.0.3.0
- .........
- Oracle Home : /users/oracle/OraHome10g
- Central Inventory : /users/oracle/oraInventory
- from : /etc/oraInst.loc
- OPatch version : 10.2.0.3.0
- OUI version : 10.2.0.3.0
- OUI location : /users/oracle/OraHome10g/oui
- Log file location : /users/oracle/OraHome10g/cfgtoollogs/opatch/opatch2013-12-19_09-54-27AM.log
- Lsinventory Output file location : /users/oracle/OraHome10g/cfgtoollogs/opatch/lsinv/lsinventory2013-12-19_09-54-27AM.txt
- --------------------------------------------------------------------------------
- Installed Top-level Products (2):
- Oracle Database 10g 10.2.0.1.0 #基础版本号
- Oracle Database 10g Release 2 Patch Set 2 10.2.0.3.0 #PSR号为3
- There are 2 products installed in this Oracle Home.
- Interim patches (2) : #列出了2个临时补丁patch号及bug号
- Patch 5556081 : applied on Wed Feb 15 11:16:15 HKT 2012
- Created on 9 Nov 2006, 22:20:50 hrs PST8PDT
- Bugs fixed:
- 5556081
- Patch 5557962 : applied on Wed Feb 15 11:16:08 HKT 2012
- Created on 9 Nov 2006, 23:23:06 hrs PST8PDT
- Bugs fixed:
- 4269423, 5557962, 5528974
- --------------------------------------------------------------------------------
- OPatch succeeded.
- #也可以通过查询dba_server_registry查看当前数据补丁的使用情况
- SQL> select comp_name,version from dba_server_registry;
- COMP_NAME VERSION
- -------------------------------------------------- ------------------------------
- Oracle XML Database 10.2.0.3.0
- Oracle Label Security 10.2.0.3.0
- Oracle Expression Filter 10.2.0.3.0
- Oracle Rules Manager 10.2.0.3.0
- Oracle Workspace Manager 10.2.0.1.0
- Oracle Database Catalog Views 10.2.0.3.0
- Oracle Database Packages and Types 10.2.0.3.0
- JServer JAVA Virtual Machine 10.2.0.3.0
- Oracle XDK 10.2.0.3.0
- Oracle Database Java Packages 10.2.0.3.0
- 10 rows selected.
- #下面是Oracle 11g下使用lsinventory -detail时patch的应用情况
- [oracle@linux1 OPatch]$ ./opatch lsinventory -detail
- 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.
- ...............(省略)
- --------------------------------------------------------------------------------
- Installed Top-level Products (1):
- Oracle Database 11g 11.2.0.1.0
- There are 1 products installed in this Oracle Home.
- Installed Products (134):
- Agent Required Support Files 10.2.0.4.2
- Assistant Common Files 11.2.0.1.0
- Bali Share 1.1.18.0.0
- Buildtools Common Files 11.2.0.1.0
- Character Set Migration Utility 11.2.0.1.0
- Cluster Verification Utility Common Files 11.2.0.1.0
- Database Configuration and Upgrade Assistants 11.2.0.1.0
- ...............(省略)
- SSL Required Support Files for InstantClient 11.2.0.1.0
- Sun JDK 1.5.0.17.0
- XDK Required Support Files 11.2.0.1.0
- XML Parser for Java 11.2.0.1.0
- XML Parser for Oracle JVM 11.2.0.1.0
- There are 134 products installed in this Oracle Home.
- Interim patches (1) :
- Patch 8670579 : applied on Thu Aug 15 17:53:20 CST 2013
- Unique Patch ID: 12243614
- Created on 25 Feb 2010, 09:55:12 hrs US/Eastern
- Bugs fixed:
- 8670579
- Files Touched: #这里列出了相应的文件
- /ahseteco.o --> ORACLE_HOME/lib/libnnz11.a
- /am11rkg.o --> ORACLE_HOME/lib/libnnz11.a
- /amsha.o --> ORACLE_HOME/lib/libnnz11.a
- /cpui32.o --> ORACLE_HOME/lib/libnnz11.a
- /sha.o --> ORACLE_HOME/lib/libnnz11.a
- /x931rand.o --> ORACLE_HOME/lib/libnnz11.a
- /am11dkg.o --> ORACLE_HOME/lib/libnnz11.a
- /am931rnd.o --> ORACLE_HOME/lib/libnnz11.a
- /amsharnd.o --> ORACLE_HOME/lib/libnnz11.a
- /ghash.o --> ORACLE_HOME/lib/libnnz11.a
- /shacomm.o --> ORACLE_HOME/lib/libnnz11.a
- libnnz11.so --> ORACLE_HOME/lib/libnnz11.so
- Patch Location in Inventory:
- /u01/app/oracle/db_1/inventory/oneoffs/8670579
- Patch Location in Storage area:
- /u01/app/oracle/db_1/.patch_storage/8670579_Feb_25_2010_09_55_12
- Rac system comprising of multiple nodes #列出了当前环境的节点
- Local node = linux1
- Remote node = linux2
- --------------------------------------------------------------------------------
- OPatch succeeded.
- #下面是Oracle 11g下使用使用lsinventory -bugs_fixed来查看patch的情形
- [oracle@linux1 OPatch]$ ./opatch lsinventory -bugs_fixed
- Invoking OPatch 11.1.0.6.6
- ...............(省略)
- ------------------------------------------------------------------------------------------------------
- Installed Top-level Products (1):
- Oracle Database 11g 11.2.0.1.0
- There are 1 products installed in this Oracle Home.
- List of Bugs fixed by Installed Patches:
- Bug Fixed by Installed at Description
- Patch
- --- -------- ------------ ----------- #下面给出了和bug有关的具体描述
- 8670579 8670579 Thu Aug 15 17:53:20 CST 2013 DBBETA :NETCA/DBCA FAILED WITH HOTSPOT VIRTUAL MACHINE
- Rac system comprising of multiple nodes
- Local node = linux1
- Remote node = linux2
- ------------------------------------------------------------------------------------------------------
- OPatch succeeded.