对于PSU补丁的安装,不是简单的opatch apply之后就完成了,还需要运行特定的sql。
在客户数据库中检查补丁情况,发现安装PSU只完成了第一步:
fgms:/fgms/oracle/tru64_setupFile/OPatch
> ./opatch lsinventory
Invoking OPatch 10.2.0.5.0
Oracle Interim Patch Installer version 10.2.0.5.0
Copyright (c) 2010, Oracle Corporation. All rights reserved.
Oracle Home : /fgms/oracle10g/db
Central Inventory : /fgms/oracle/oraInventory
from : /var/opt/oracle/oraInst.loc
OPatch version : 10.2.0.5.0
OUI version : 10.2.0.4.0
OUI location : /fgms/oracle10g/db/oui
Log file location : /fgms/oracle10g/db/cfgtoollogs/opatch/opatch2011-06-02_15-41-01PM.log
Patch history file: /fgms/oracle10g/db/cfgtoollogs/opatch/opatch_history.txt
Lsinventory Output file location : /fgms/oracle10g/db/cfgtoollogs/opatch/lsinv/lsinventory2011-06-02_15-41-01PM.txt
--------------------------------------------------------------------------------
Installed Top-level Products (2):
Oracle Database 10g 10.2.0.2.0
Oracle Database 10g Release 2 Patch Set 3 10.2.0.4.0
There are 2 products installed in this Oracle Home.
Interim patches (2) :
Patch 9654991 : applied on Mon Sep 20 15:48:09 GMT+08:00 2010
Unique Patch ID: 12744499
Created on 7 Jul 2010, 15:37:03 hrs PST8PDT
Bugs fixed:
9714832, 9713537, 9678695, 9655017, 9173248, 8309642, 9678697, 9678690
9573054, 9654991
This patch overlays patches:
9352164
This patch needs patches:
9352164
as prerequisites
Patch 9352164 : applied on Mon Sep 20 15:34:43 GMT+08:00 2010
Unique Patch ID: 12389142
Created on 7 Apr 2010, 12:28:31 hrs PST8PDT
Bugs fixed:
9377578, 6418420, 7835247, 7207654, 7592346, 6724797, 7936993, 7331867
9093300, 7535152, 7552067, 5879114, 8866013, 5457450, 8344348, 7272297
7136866, 7196894, 6258480, 7013124, 6512622, 6355586, 7196532, 8568395
8309587, 7557226, 5399699, 6509115, 8568397, 8568398, 7127618, 5701695
6052226, 7424804, 6817593, 7553884, 6741425, 7513673, 6783812, 8437213
6452766, 6469211, 7527650, 8309592, 8479537, 5991038, 5686407, 6945157
7639602, 9119226, 6403091, 7589862, 7552082, 6711853, 8304589, 6052169
8199266, 6327692, 5756769, 9352191, 7460818, 6268409, 8232056, 6687381
6972843, 8230457, 6800507, 7027551, 6778714, 6200820, 6645719, 7393804
6775231, 3934160, 6683178, 6650256, 5085288, 7528105, 7329252, 6378112
6151380, 6844866, 4723109, 8544896, 5126719, 5890312, 5934363, 7036453
7610362, 8426816, 8433026, 7270434, 7172531, 6451626, 8247855, 5497338
6324944, 6874522, 7175513, 6960489, 7341598, 8576156, 6797677, 8342923
5895190, 6756739, 7150470, 7593835, 7356443, 7044551, 8227106, 4695511
7298688, 5747462, 8556340, 7197445, 5348308, 7937113, 8341623, 7569205
8409848, 6053134, 6163771, 6851669, 6181488, 6375150, 6825866, 7210921
7295780, 6345573, 7033630, 6954722, 6824129, 7523475, 7457766, 7309458
8324577, 6840740, 6804746, 7375611, 8268054, 6981690, 6512811, 6988017
7375613, 8344399, 7340448, 8362683, 7375617, 8251247, 5933656, 6005347
9145204, 6599920, 7238230, 6379441, 6452375, 6352003, 6833965, 7136489
6610218, 7612639, 6392076, 7225204, 9119194, 5476236, 9442328, 7609057
7609058, 6605106, 6374297, 6193945, 4693355, 8217795, 7039896, 7432514
7330909, 6952701, 7190270, 8287155, 7587008, 7207932, 6802650, 7189447
8481935, 4598439, 9442331, 6615740, 7155655, 6749617, 9442335, 7159505
5868257, 5727166, 7173005, 6917874, 9442339, 7013768, 7691766, 7385253
7291739, 7225720, 7257770, 7363767, 7244238, 6941717, 8267348, 7710551
8354686, 7247217, 8328954, 7299153, 8909984, 6681695, 8702276, 9119284
8217011, 7661251, 6265559, 6823287, 6991626, 6954829, 5259835, 6500033
5923486, 7432601, 7022234, 8534387, 5147386, 7697802, 6653934, 7375644
6490140, 7662491, 8331466, 5623467, 6070225, 6635214, 7396409, 6638558
7038750, 6714608, 6838714, 6870937, 7219752, 7263842, 7278117, 6882739
5404871, 8836667, 8373286, 7393292, 6678845, 6903051, 7936793, 6600051
7155248, 4966512, 7155249, 7197637, 8836308, 8568402, 8568404, 8568405
8431487, 5704108, 6343150, 7280764, 6923450, 7643632, 6145177, 8836671
8310931, 6640411, 8347704, 8836675, 7155250, 7155251, 8836677, 7155252
8836678, 7155253, 8292378, 7155254, 6219529, 7411865, 8227091, 8340379
7276960, 6145687, 7659217, 5863926, 7022905, 6852598, 7123643, 6596564
6413089, 6851438, 8836681, 8836683, 8836684, 8836686, 7579469, 7494333
7315642, 8340383, 6786022, 8340387, 6926448, 7600026, 7462072, 6679303
8815639, 7197583, 7172752, 7326645, 7008262, 9173244, 9173248, 7573151
8490879, 7477934, 6725634, 6733655, 6799205, 6980597, 7499353, 6084232
6014513, 7140204, 7254987, 8833280, 6647480, 6120004, 7693128, 6760697
6051177, 8247215, 6858062, 7189645, 6844739, 6768251, 7196863, 5630796
7378661, 7378735, 5970301, 6705822, 8290506, 6658484, 7599944, 8309623
7125408, 7257461, 6987790, 7568556, 6919819, 8886674, 5883691, 6955744
7801939, 6074620, 7149004, 6857917, 8283650, 6445948, 5929055, 6110752
7552042, 8210889, 8287504, 6506617, 7306915, 6271590, 5386204, 6976005
8330783, 7606362, 5377242, 7043989, 8309632, 7575925, 6870047, 8309637
5902053, 8309639, 7028176, 6827260, 7588384, 4726401, 6720712, 5910650
6752765, 6971433, 6024730, 8315482, 6628122, 8239142, 9352164, 5695562
4637902, 7345904, 8309642, 6994160, 8556586, 6404447, 8220734, 6919764
7597354, 7523787, 6029179, 5231155, 6455659
--------------------------------------------------------------------------------
OPatch succeeded.
从OPATCH工具信息可以看到,数据库的PSU已经打到了10.2.0.4.5,但是查询DBA_REGISTRY_HISTORY视图,却没有任何记录。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Prod
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Compaq Tru64 UNIX: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
SQL> select * from dba_registry_history;
no rows selected
这说明补丁的安装过程只进行了前一半,而随后的调用sql的步骤没有执行,分别运行$ORACLE_HOME/psu/10.2.0.4.4/catpsu.sql和$ORACLE_HOME/psu/10.2.0.4.5/catpsu.sql:
> cd $ORACLE_HOME/psu
fgms:/fgms/oracle10g/db/psu
> ls
10.2.0.4.4 10.2.0.4.5
fgms:/fgms/oracle10g/db/psu
> cd 10.2.0.4.4
fgms:/fgms/oracle10g/db/psu/10.2.0.4.4
> sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Thu Jun 2 16:13:55 2011
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Data Mining and Real Application Testing options
SQL> @catpsu.sql
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
.
.
.
SQL> ALTER SESSION SET current_schema = SYS;
Session altered.
SQL> PROMPT Updating registry...
Updating registry...
SQL> INSERT INTO registry$history
2 (action_time, action,
3 namespace, version, id,
4 bundle_series, comments)
5 VALUES
6 (SYSTIMESTAMP, 'APPLY',
7 SYS_CONTEXT('REGISTRY$CTX','NAMESPACE'),
8 '10.2.0.4',
9 4,
10 'PSU',
11 'PSU 10.2.0.4.4');
1 row created.
SQL> COMMIT;
Commit complete.
SQL> SPOOL off
SQL> SET echo off
Check the following log file for errors:
/fgms/oracle10g/db/cfgtoollogs/catbundle/catbundle_PSU_B1FGMS_APPLY_2011Jun02_16_14_08.log
整个TRACE文件超过了4W行,由于篇幅,这里只列出了开头和结尾部分内容,可以看到,如果不运行catpsu.sql,事实上补丁的很多内容只是应用到了数据库软件,而并没有真正应用到数据库字典中。
SQL> col action_time format a30
SQL> col action format a10
SQL> col namespace format a10
SQL> col version format a10
SQL> col comments format a15
SQL> select * from dba_registry_history;
ACTION_TIME ACTION NAMESPACE VERSION ID BUNDL COMMENTS
------------------------------ ---------- ---------- ---------- ------ ----- --------------
02-JUN-11 04.15.43.804266 PM APPLY SERVER 10.2.0.4 4 PSU PSU 10.2.0.4.4
1 row selected.
这时PSU的安装信息已经写入到数据字典中,下面运行10.2.0.4.5的catpsu.sql:
SQL> @../10.2.0.4.5/catopsu.sql
PL/SQL procedure successfully completed.
1 row selected.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
1 row selected.
Generating apply and rollback scripts...
Check the following file for errors:
/fgms/oracle10g/db/cfgtoollogs/catbundle/catbundle_OPSU_B1FGMS_GENERATE_2011Jun02_16_21_39.log
Apply script: /fgms/oracle10g/db/rdbms/admin/catbundle_OPSU_B1FGMS_APPLY.sql
Rollback script: /fgms/oracle10g/db/rdbms/admin/catbundle_OPSU_B1FGMS_ROLLBACK.sql
PL/SQL procedure successfully completed.
Executing script file...
1 row selected.
SQL> COLUMN spool_file NEW_VALUE spool_file NOPRINT
SQL> SELECT '/fgms/oracle10g/db/cfgtoollogs/catbundle/' 'catbundle_OPSU_' name '_APPLY_' TO_CHAR(SYSDATE, 'YYYYMonDD_hh24_mi_ss', 'NLS_DATE_LANGUAGE=''AMERICAN''') '.log' AS spool_file FROM v$database;
1 row selected.
SQL> SPOOL &spool_file
SQL> exec dbms_registry.set_session_namespace('SERVER')
PL/SQL procedure successfully completed.
SQL> PROMPT Skipping OLAP Analytic Workspace because it is not installed or versions mismatch...
Skipping OLAP Analytic Workspace because it is not installed or versions mismatch...
SQL> PROMPT Skipping OLAP Catalog because it is not installed or versions mismatch...
Skipping OLAP Catalog because it is not installed or versions mismatch...
SQL> PROMPT Skipping Oracle OLAP API because it is not installed or versions mismatch...
Skipping Oracle OLAP API because it is not installed or versions mismatch...
SQL> ALTER SESSION SET current_schema = SYS;
Session altered.
SQL> PROMPT Updating registry...
Updating registry...
SQL> INSERT INTO registry$history
2 (action_time, action,
3 namespace, version, id,
4 bundle_series, comments)
5 VALUES
6 (SYSTIMESTAMP, 'APPLY',
7 SYS_CONTEXT('REGISTRY$CTX','NAMESPACE'),
8 '10.2.0.4',
9 1,
10 'OPSU',
11 'PSU 10.2.0.4.5');
1 row created.
SQL> COMMIT;
Commit complete.
SQL> SPOOL off
SQL> SET echo off
Check the following log file for errors:
/fgms/oracle10g/db/cfgtoollogs/catbundle/catbundle_OPSU_B1FGMS_APPLY_2011Jun02_16_21_41.log
10.2.0.4.5的所有记录都列出来了,和10.2.0.4.4相比,这里的修改至少相差了不止一个数量级,这也是10.2.0.4.4是基础PSU,而10.2.0.4.5是OPSU的原因。
最后检查数据库中PSU信息:
SQL> select * from dba_registry_history;
ACTION_TIME ACTION NAMESPACE VERSION ID BUNDL COMMENTS
------------------------------ ---------- ---------- ---------- ------ ----- --------------
02-JUN-11 04.15.43.804266 PM APPLY SERVER 10.2.0.4 4 PSU PSU 10.2.0.4.4
02-JUN-11 04.21.41.080347 PM APPLY SERVER 10.2.0.4 1 OPSU PSU 10.2.0.4.5
2 rows selected.
至此,PSU的安装才算真正完成。