一、CPU和PSU

近日,将数据库从9.2.0.6升级到11.2.0.4后,发现11.2.0.4通过DBLINK访问其他的9i库时发生ORA-02072错误,通过Google找到解决方案,即升级到PSU 11.2.0.4.8,在此,记录一下安装补丁的过程,建议在打补丁前仔细阅读补丁Readme文档的相关章节,有关补丁的所有细节都可以在文档中找到。

关于ORA-02072:

ORA-02072: distributed database network protocol mismatch
Cause: This should never happen between different PRODUCTION releases of ORACLE, but may happen between alpha and beta releases, for example.
Action: Upgrade the older release.

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文档。

二、OPatch工具

OPatch工具包,在安装目录$ORACLE_HOME下,PSU安装升级,都是通过OPatch来完成的。PSU的升级安装对OPatch的版本有一定的要求,关于这一点,可以查看PSU的Readme文档。例如,要安装p21352635_112040_Linux-x86-64,则必须要11.2.0.3.6或更高版本的OPatch,见如下截图:

Patch 21352635 - Database Patch Set Update 11.2.0.4.8-LMLPHP

那么如何确定当前系统的OPatch版本呢?方法如下所示:

[oracle@dbserver-otwb dbhome_1]$ cd $ORACLE_HOME/OPatch
[oracle@dbserver-otwb OPatch]$ ./opatch version
OPatch Version: 11.2.0.3.4 OPatch succeeded.

显然,当前系统的OPatch版本不适合安装补丁p21352635_112040_Linux-x86-64,要先升级OPatch,升级步骤如下:

(1)、备份之前版本的OPatch。

$ mv $ORACLE_HOME/OPatch OPatch.backup  # 也可以直接覆盖

(2)、下载对于版本的OPatch解压至$ORACLE_HOME目录下。然后授予执行权限。

$ chmod +x opatch opatch.bat opatchdiag opatchdiag.bat

(3)、重新验证OPatch版本。

$ ./opatch version
OPatch Version: 11.2.0.3.6 OPatch succeeded.

三、应用补丁

主要,首先要关闭数据库监听和实例。

$ unzip p21352635_112040_Linux-x86-64.zip
$ cd 21352635/
$ $ORACLE_HOME/OPatch/opatch apply
Oracle Interim Patch Installer version 11.2.0.3.6
Copyright (c) 2013, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version : 11.2.0.3.6
OUI version : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2016-07-12_09-40-56AM_1.log Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 17478514 18031668 18522509 19121551 19769489 20299013 20760982 21352635 Do you want to proceed? [y|n] ...省略部分内容... Backing up files...
Applying sub-patch '17478514' to OH '/u01/app/oracle/product/11.2.0/db_1' Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.rdbms.rsf, 11.2.0.4.0... Patching component oracle.sdo, 11.2.0.4.0... Patching component oracle.sysman.agent, 10.2.0.4.5... Patching component oracle.xdk, 11.2.0.4.0... Patching component oracle.rdbms.dbscripts, 11.2.0.4.0... Patching component oracle.sdo.locator, 11.2.0.4.0... Patching component oracle.nlsrtl.rsf, 11.2.0.4.0... Patching component oracle.xdk.rsf, 11.2.0.4.0... Patching component oracle.rdbms.rman, 11.2.0.4.0... Verifying the update...
Applying sub-patch '18031668' to OH '/u01/app/oracle/product/11.2.0/db_1' Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.rdbms.rsf, 11.2.0.4.0... Patching component oracle.ldap.rsf, 11.2.0.4.0... Patching component oracle.rdbms.crs, 11.2.0.4.0... Patching component oracle.precomp.common, 11.2.0.4.0... Patching component oracle.ldap.rsf.ic, 11.2.0.4.0... Patching component oracle.rdbms.deconfig, 11.2.0.4.0... Patching component oracle.rdbms.dbscripts, 11.2.0.4.0... Patching component oracle.rdbms.rman, 11.2.0.4.0... Verifying the update...
Applying sub-patch '18522509' to OH '/u01/app/oracle/product/11.2.0/db_1' Patching component oracle.rdbms.rsf, 11.2.0.4.0... Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.precomp.common, 11.2.0.4.0... Patching component oracle.rdbms.rman, 11.2.0.4.0... Patching component oracle.rdbms.dbscripts, 11.2.0.4.0... Patching component oracle.rdbms.deconfig, 11.2.0.4.0... Verifying the update...
Applying sub-patch '19121551' to OH '/u01/app/oracle/product/11.2.0/db_1' Patching component oracle.precomp.common, 11.2.0.4.0... Patching component oracle.sysman.console.db, 11.2.0.4.0... Patching component oracle.rdbms.rsf, 11.2.0.4.0... Patching component oracle.rdbms.rman, 11.2.0.4.0... Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.rdbms.dbscripts, 11.2.0.4.0... Patching component oracle.ordim.client, 11.2.0.4.0... Patching component oracle.ordim.jai, 11.2.0.4.0... Verifying the update...
Applying sub-patch '19769489' to OH '/u01/app/oracle/product/11.2.0/db_1'
ApplySession: Optional component(s) [ oracle.sysman.agent, 11.2.0.4.0 ] not present in the Oracle Home or a higher version is found. Patching component oracle.precomp.common, 11.2.0.4.0... Patching component oracle.ovm, 11.2.0.4.0... Patching component oracle.xdk, 11.2.0.4.0... Patching component oracle.rdbms.util, 11.2.0.4.0... Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.rdbms.dbscripts, 11.2.0.4.0... Patching component oracle.xdk.parser.java, 11.2.0.4.0... Patching component oracle.oraolap, 11.2.0.4.0... Patching component oracle.rdbms.rsf, 11.2.0.4.0... Patching component oracle.xdk.rsf, 11.2.0.4.0... Patching component oracle.rdbms.rman, 11.2.0.4.0... Patching component oracle.rdbms.deconfig, 11.2.0.4.0... Verifying the update...
Applying sub-patch '20299013' to OH '/u01/app/oracle/product/11.2.0/db_1' Patching component oracle.rdbms.dv, 11.2.0.4.0... Patching component oracle.rdbms.oci, 11.2.0.4.0... Patching component oracle.precomp.common, 11.2.0.4.0... Patching component oracle.sysman.agent, 10.2.0.4.5... Patching component oracle.xdk, 11.2.0.4.0... Patching component oracle.sysman.common, 10.2.0.4.5... Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.rdbms.dbscripts, 11.2.0.4.0... Patching component oracle.xdk.parser.java, 11.2.0.4.0... Patching component oracle.sysman.console.db, 11.2.0.4.0... Patching component oracle.xdk.rsf, 11.2.0.4.0... Patching component oracle.rdbms.rsf, 11.2.0.4.0... Patching component oracle.sysman.common.core, 10.2.0.4.5... Patching component oracle.rdbms.rman, 11.2.0.4.0... Patching component oracle.rdbms.deconfig, 11.2.0.4.0... Verifying the update...
Applying sub-patch '20760982' to OH '/u01/app/oracle/product/11.2.0/db_1' Patching component oracle.sysman.console.db, 11.2.0.4.0... Patching component oracle.rdbms, 11.2.0.4.0... Patching component oracle.rdbms.dbscripts, 11.2.0.4.0... Verifying the update...
Applying sub-patch '21352635' to OH '/u01/app/oracle/product/11.2.0/db_1' Patching component oracle.sysman.agent, 10.2.0.4.5... Patching component oracle.rdbms.rsf, 11.2.0.4.0... Patching component oracle.rdbms.rman, 11.2.0.4.0... Patching component oracle.rdbms, 11.2.0.4.0... Verifying the update...
Composite patch 21352635 successfully applied.
Log file location: /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2016-07-12_09-40-56AM_1.log OPatch succeeded.

运行catbundle.sql和utlrp.sql脚本,对于RAC环境,仅需要在一个节点上运行。

(1)、catbundle.sql将补丁信息反射到数据库中,使数据库知道你最后一次打了什么补丁或者回滚了哪些补丁。

cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT

(2)、utlrp.sql脚本可以在数据库运行的状态下编译数据库中的invalid对象,Oracle建议在对数据库进行迁移、升级、降级后都运行一遍utlrp.sql以编译无效对象。

cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql

(3)、查看 $ORACLE_HOME/cfgtoollogs/catbundle or $ORACLE_BASE/cfgtoollogs/catbundle目录下的的日志文件是否记录错误。

catbundle_PSU_<database SID>_APPLY_<TIMESTAMP>.log
catbundle_PSU_<database SID>_GENERATE_<TIMESTAMP>.log

至此,本次patch过程结束。

四、确认升级后补丁信息

(1)、通过OPatch的信息库记录,可以看到补丁信息。

$ $ORACLE_HOME/OPatch/opatch lsinventory
Oracle Interim Patch Installer version 11.2.0.3.6
Copyright (c) 2013, Oracle Corporation. All rights reserved. Oracle Home : /u01/app/oracle/product/11.2.0/db_1
Central Inventory : /u01/app/oraInventory
from : /u01/app/oracle/product/11.2.0/db_1/oraInst.loc
OPatch version : 11.2.0.3.6
OUI version : 11.2.0.4.0
Log file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/opatch2016-07-12_11-01-23AM_1.log Lsinventory Output file location : /u01/app/oracle/product/11.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2016-07-12_11-01-23AM.txt --------------------------------------------------------------------------------
Installed Top-level Products (1): Oracle Database 11g 11.2.0.4.0
There are 1 product(s) installed in this Oracle Home. Interim patches (1) : Patch 21352635 : applied on Tue Jul 12 09:50:04 CST 2016
Unique Patch ID: 19227862
Patch description: "Database Patch Set Update : 11.2.0.4.8 (21352635)"
Created on 1 Sep 2015, 07:49:44 hrs
Sub-patch 20760982; "Database Patch Set Update : 11.2.0.4.7 (20760982)"
Sub-patch 20299013; "Database Patch Set Update : 11.2.0.4.6 (20299013)"
Sub-patch 19769489; "Database Patch Set Update : 11.2.0.4.5 (19769489)"
Sub-patch 19121551; "Database Patch Set Update : 11.2.0.4.4 (19121551)"
Sub-patch 18522509; "Database Patch Set Update : 11.2.0.4.3 (18522509)"
Sub-patch 18031668; "Database Patch Set Update : 11.2.0.4.2 (18031668)"
Sub-patch 17478514; "Database Patch Set Update : 11.2.0.4.1 (17478514)"
Bugs fixed:
17288409, 21051852, 18607546, 17205719, 17811429, 17816865, 20506699
17922254, 17754782, 16934803, 13364795, 17311728, 17441661, 17284817
16992075, 17446237, 14015842, 19972569, 21538558, 20925795, 17449815
17375354, 19463897, 17982555, 17235750, 13866822, 18317531, 17478514
18235390, 14338435, 20803583, 13944971, 20142975, 17811789, 16929165
18704244, 20506706, 17546973, 20334344, 14054676, 17088068, 18264060
17346091, 17343514, 21538567, 19680952, 18471685, 19211724, 13951456
16315398, 18744139, 16850630, 19049453, 18673304, 17883081, 19915271
18641419, 18262334, 17006183, 16065166, 18277454, 16833527, 10136473
18051556, 17865671, 17852463, 18554871, 17853498, 18334586, 17588480
17551709, 19827973, 17842825, 17344412, 18828868, 17025461, 11883252
13609098, 17239687, 17602269, 19197175, 18316692, 17313525, 12611721
19544839, 18964939, 17600719, 18191164, 19393542, 17571306, 18482502
20777150, 19466309, 17040527, 17165204, 18098207, 16785708, 17174582
16180763, 17465741, 16777840, 12982566, 19463893, 12816846, 16875449
17237521, 19358317, 17811438, 17811447, 17945983, 18762750, 17184721
16912439, 18061914, 17282229, 18331850, 18202441, 17082359, 18723434
19554106, 14034426, 18339044, 19458377, 17752995, 20448824, 17891943
17258090, 17767676, 16668584, 18384391, 17040764, 17381384, 15913355
18356166, 14084247, 20506715, 13853126, 18203837, 14245531, 16043574
17848897, 17877323, 17468141, 17786518, 17912217, 17037130, 18155762
16956380, 17478145, 17394950, 18189036, 18641461, 18619917, 17027426
21352646, 16268425, 19584068, 18436307, 17265217, 17634921, 13498382
20004087, 17443671, 18000422, 20004021, 17571039, 21067387, 16344544
18009564, 14354737, 18135678, 18614015, 20441797, 18362222, 17835048
16472716, 17936109, 17050888, 17325413, 14010183, 18747196, 17761775
16721594, 17082983, 20067212, 21179898, 17302277, 18084625, 15990359
18203835, 17297939, 17811456, 16731148, 17215560, 13829543, 14133975
17694209, 18091059, 17385178, 8322815, 17586955, 17201159, 17655634
18331812, 19730508, 18868646, 17648596, 16220077, 16069901, 17348614
17393915, 17274537, 17957017, 18096714, 17308789, 18436647, 14285317
19289642, 14764829, 18328509, 17622427, 16943711, 14368995, 17346671
18996843, 17783588, 16618694, 17672719, 18856999, 18783224, 17851160
17546761, 17798953, 18273830, 19972566, 16384983, 17726838, 17360606
13645875, 18199537, 16542886, 17889549, 14565184, 17071721, 20299015
17610798, 20657441, 17397545, 18230522, 16360112, 19769489, 12905058
18641451, 12747740, 18430495, 17042658, 17016369, 14602788, 19972568
18508861, 19788842, 14657740, 17332800, 13837378, 19972564, 17186905
18315328, 19699191, 17437634, 19006849, 19013183, 17296856, 18674024
17232014, 16855292, 21051840, 14692762, 17762296, 17705023, 19121551
19854503, 19309466, 18681862, 18554763, 20558005, 17390160, 18456514
16306373, 13955826, 18139690, 17501491, 17299889, 17752121, 17889583
18673325, 18293054, 17242746, 17951233, 17649265, 18094246, 19615136
17011832, 16870214, 17477958, 18522509, 20631274, 16091637, 17323222
16595641, 16524926, 18228645, 18282562, 17596908, 17156148, 18031668
16494615, 17545847, 17614134, 13558557, 17341326, 17891946, 17716305
16392068, 19271443, 18092127, 18440047, 17614227, 14106803, 16903536
18973907, 18673342, 17389192, 16194160, 17006570, 17612828, 17721717
17570240, 17390431, 16863422, 18325460, 19727057, 16422541, 19972570
17267114, 18244962, 21538485, 18765602, 18203838, 16198143, 17246576
14829250, 17835627, 18247991, 14458214, 21051862, 16692232, 17786278
17227277, 16042673, 16314254, 16228604, 16837842, 17393683, 17787259
20331945, 20074391, 15861775, 16399083, 18018515, 18260550, 21051858
17036973, 16613964, 17080436, 16579084, 18384537, 18280813, 20296213
16901385, 15979965, 18441944, 16450169, 9756271, 17892268, 11733603
16285691, 17587063, 16538760, 18180390, 18193833, 21051833, 17238511
17824637, 16571443, 18306996, 14852021, 18674047, 17853456, 12364061 -------------------------------------------------------------------------------- OPatch succeeded.

(2)、另外,也可以通过dba_registry_history视图查看升级信息。

SQL> select version,id,bundle_series,comments from dba_registry_history;

VERSION              ID BUNDLE_SERIES                  COMMENTS
-------------------- -- ------------------------------ ----------------------------------------
11.2.0.4 0 PSU Patchset 11.2.0.2.0
11.2.0.4 0 PSU Patchset 11.2.0.2.0
11.2.0.4 8 PSU PSU 11.2.0.4.8
05-11 20:48