一、准备工作

1,数据库环境

操作系统版本   : Redhat 5.8 x64  
数据库版本     : Oracle 10.2.0.5 x64 RAC    
Cluterware     : 10.2.0.5    
Oracle database: 10.2.0.5.0    
PSU补丁        : 10.2.0.5.19 (2015年下半年)

2,准备内容

OPatch : p6880880_102000_Linux-x86-64.zip  
DB PSU : p20299014_10205_Linux-x86-64.zip

说明:p20299014补丁包无CRS的补丁修复,所以直接打数据库PSU即可。


二、更新OPatch版本,必须要更新

说明:分别在两个节点更新OPatch版本。

1. 更新OPatch版本,需要从10.2.0.4.9更新到10.2.0.5.1,OPatch直接压缩替换就可以了。

(1) 上传p6880880_112000_Linux-x86-64.zip,p20299014_10205_Linux-x86-64.zip到/u01/app目录下。  
(2) root用户下将原OPatch目录改名。

mv /u01/app/oracle/product/10.2.0/db_1/OPatch /u01/app/oracle/product/10.2.0/db_1/OPatchBK

2. oracle目录OPatch替换

(1) root用户  
cd /u01/app/    
chown oracle:oinstall p6880880_102000_Linux-x86-64.zip    
chown oracle:oinstall p20299014_10205_Linux-x86-64.zip

(2) oracle用户

su - oracle  
cd /u01/app/    
unzip p6880880_112000_Linux-x86-64.zip    
unzip p20299014_10205_Linux-x86-64.zip

(3) root用户

cd /u01/app/  
mv OPatch /u01/app/oracle/product/10.2.0/db_1/

(4) oracle用户测试

su - oracle

/u01/app/oracle/product/10.2.0/db_1/OPatch/opatch version

Invoking OPatch 10.2.0.5.1  
OPatch Version: 10.2.0.5.1


3. 测试兼容性

su - oracle

$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /u01/app/20299014 -oh $ORACLE_HOME

Invoking OPatch 10.2.0.5.1  
Oracle Interim Patch Installer version 10.2.0.5.1    
Copyright (c) 2010, Oracle Corporation.  All rights reserved.    
PREREQ session    
Oracle Home       : /u01/app/oracle/product/10.2.0/db_1    
Central Inventory : /u01/app/oracle/oraInventory    
   from           : /etc/oraInst.loc    
OPatch version    : 10.2.0.5.1    
OUI version       : 10.2.0.5.0    
OUI location      : /u01/app/oracle/product/10.2.0/db_1/oui    
Log file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2016-03-29_10-38-44AM.log    
Patch history file: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt    
Invoking prereq "checkconflictagainstohwithdetail"    
Prereq "checkConflictAgainstOHWithDetail" passed.    
OPatch succeeded.

4. 查看该补丁能否采用rolling方式升级

采用这种方法对应用系统没有影响的,升级一个节点的同时,其他节点不需要停机.  
$ /u01/app/oracle/product/10.2.0/db_1/OPatch/opatch query -all /u01/app/20299014/ |grep rolling                          
Patch is a rolling patch: true


三、打database PSU补丁

升级看各自的环境,可以有用滚动升级的方式,也可以采用全关闭了再升级。

1. 先升级节点1,关闭节点1

[oracle@node1 ~]$ srvctl stop instance -d orcl -i orcl1  
[oracle@node1 ~]$ srvctl stop listener -n node1    
[oracle@node1 ~]$ srvctl stop asm -n node1

2. 执行升级

本地升级方式:  
cd /u01/app/    
/u01/app/oracle/product/10.2.0/db_1/OPatch/opatch napply -local -oh /u01/app/oracle/product/10.2.0/db_1 -id 20299014

例:如果不采用滚动升级的话,本地与远程一起打的方式:  
cd /u01/app/20299014    
/u01/app/oracle/product/10.2.0/db_1/OPatch/opatch apply

先打本地节点,启动节点1数据库,再关闭节点2,再打节点2补丁,最后启动节点2。

3. 节点1启动。

[oracle@node1 ~]$ srvctl start asm -n node1  
[oracle@node1 ~]$ srvctl start instance -d orcl -i orcl1    
[oracle@node1 ~]$ srvctl start listener -n node1

4. 关闭节点2

[oracle@node2 ~]$ srvctl stop instance -d orcl -i orcl2  
[oracle@node2 ~]$ srvctl stop listener -n node2    
[oracle@node2 ~]$ srvctl stop asm -n node2

继续打节点2补丁,完毕后,再启动节点2.

[oracle@node2 ~]$ srvctl start asm -n node2  
[oracle@node2 ~]$ srvctl start instance -d orcl -i orcl2    
[oracle@node2 ~]$ srvctl start listener -n node2

5. 节点1,节点2检查升级情况

$ /u01/app/oracle/product/10.2.0/db_1/OPatch/opatch lsinv   
                                                    
Invoking OPatch 10.2.0.5.1    
Oracle Interim Patch Installer version 10.2.0.5.1    
Copyright (c) 2010, Oracle Corporation.  All rights reserved.

Oracle Home       : /u01/app/oracle/product/10.2.0/db_1  
Central Inventory : /u01/app/oracle/oraInventory    
   from           : /etc/oraInst.loc    
OPatch version    : 10.2.0.5.1    
OUI version       : 10.2.0.5.0    
OUI location      : /u01/app/oracle/product/10.2.0/db_1/oui    
Log file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch2016-03-29_16-10-36PM.log

Patch history file: /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch_history.txt

Lsinventory Output file location : /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory2016-03-29_16-10-36PM.txt

--------------------------------------------------------------------------------  
Installed Top-level Products (2):

Oracle Database 10g                                                  10.2.0.1.0  
Oracle Database 10g Release 2 Patch Set 4                            10.2.0.5.0    
There are 2 products installed in this Oracle Home.

Interim patches (1) :

Patch  20299014     : applied on Tue Mar 29 16:03:40 CST 2016  
Unique Patch ID:  19074368    
   Created on 24 Jun 2015, 02:35:37 hrs PST8PDT    
   Bugs fixed:    
     20074391, 13596521, 17088068, 8865718, 17201047, 13489660, 9020537    
     8664189, 10091698, 14275629, 19909862, 17832122, 17832123, 17832124    
     17832125, 16619894, 8822531, 10139235, 20299014, 8350262, 7119382    
     19274521, 13632738, 11724962, 20331945, 19274523, 9320130, 16961614    
     16961615, 13775862, 16961616, 16961617, 19006757, 16961618, 16961619    
     18221699, 9399589, 14841459, 9672816, 9499302, 20299021, 9659614, 13632743    
     9949948, 14220725, 8882576, 7612454, 7111619, 9711859, 9714832, 12780098    
     13561951, 14665116, 11066597, 16703112, 19231857, 17721717, 9713537    
     14459552, 19458377, 13737773, 13737775, 16212405, 18096714, 16338983    
     14390396, 10249537, 19006849, 7115910, 8354642, 7602341, 14076510    
     12565867, 15987029, 16462834, 18641419, 11693109, 14023636, 9024850    
     8394351, 8224558, 17082365, 14149782, 9109487, 14841558, 9171933    
     10173237, 16817117, 10068982, 10306945, 8666117, 11725006, 10214450    
     14205448, 17082371, 9767674, 16306019, 9323583, 9726739, 16279211    
     8412426, 10326338, 10165083, 6651220, 9145204, 13554409, 11076894    
     19854436, 11893577, 17865671, 16746190, 14492313, 14492314, 11814891    
     14492315, 14492316, 16742123, 21048089, 16864562, 14546638, 12419258    
     16056270, 10010310, 18139709, 9689310, 9390484, 21048090, 21048091    
     9963497, 12551700, 16362358, 12551701, 17465584, 12551702, 12551703    
     12551704, 10076669, 12551705, 16270946, 12551706, 12551707, 6076890    
     9308296, 12551708, 14258925, 12880299, 17381900, 18641451, 17381901    
     17381902, 11790175, 12796518, 9772888, 8650138, 17056813, 14469008    
     12551710, 10092858, 7519406, 9821321, 8771916, 13349665, 7509714    
     10159846, 13257247, 18031728, 18641461, 16372203, 11792865, 19007266    
     19309466, 16309604, 16309605, 16309606, 18522511, 8966823, 11674645    
     17551414, 15877957, 15877958, 7026523, 15877959, 17716305, 13503598    
     18767250, 9150282, 9448311, 10327179, 14774730, 19153980, 9735237    
     9952230, 15877960, 15877961, 15877962, 15877963, 8660422, 18221700    
     18221701, 16279401, 14546673, 14105702, 14105703, 14105704, 13483152    
     14269955, 17285560, 12925532, 12748240, 9694101, 12862186, 12862187    
     14727319, 8211733, 9586877, 9548269, 6694396, 7710224, 9337325, 11856395    
     10157402, 15950541, 19699191, 6402302, 10327190, 10269717, 13015379    
     10017048, 8546356, 13561750, 8821114, 9770451, 9360157, 8488233, 10132870    
     4180770, 9532911, 7361418, 6157713, 9184754, 8544696, 17850678, 8277300    
     13343467, 16382448, 13791364, 12419392, 10208905, 20236416, 20236417    
     20236418, 20236419, 7450366, 8970313, 6690853, 6011045, 10162036, 10248542    
     9469117, 13359623, 9952270, 13343471, 9842573, 17381899, 12710774    
     20558005, 10324526, 9322219, 8636407, 12828105, 19289642, 13736501    
     9824435, 13736502, 18681879, 13736503, 13736504, 13736505, 13736506    
     9032322, 13736507, 14035825, 19769505, 11858315, 14040433, 13916709    
     12827745, 14038805, 19567242, 16721594, 13923855, 19567243, 8528171    
     9072105, 19567244, 11737047

Rac system comprising of multiple nodes  
  Local node = node1    
  Remote node = node2    
--------------------------------------------------------------------------------    
OPatch succeeded.


四、升级数据库数据字典

1,数据库启动,数据库已经启动的情况下,不需要再启动数据库,直接执行脚本即可。

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


2. 执行完后我们可以查到PSU更新信息:

set line 150  
col ACTION_TIME for a30    
col ACTION for a10    
col NAMESPACE for a8    
col VERSION for a18    
col BUNDLE_SERIES for a5    
col COMMENTS for a20    
select * from dba_registry_history;    
 

ACTION_TIME                    ACTION     NAMESPAC VERSION                    ID BUNDL COMMENTS  
------------------------------ ---------- -------- ------------------ ---------- ----- --------------------    
29-MAR-16 04.15.04.729398 PM   jvmpsu.sql SERVER   10.2.0.5.2OJVMBP            0       RAN jvmpsu.sql    
29-MAR-16 04.15.52.723026 PM   jvmpsu.sql SERVER   10.2.0.5.2OJVMBP            0       RAN jvmpsu.sql    
29-MAR-16 04.24.14.043257 PM   APPLY      SERVER   10.2.0.5                   19 PSU   PSU 10.2.0.5.19

3 rows selected.  
SQL>