oracle database psu 11.2.0.3.0 到11.2.0.3.9
1.下載psu包,當然要有MOS賬號才能下載啦。
unzip oracle_database_psu_11.2.0.3.9_Linux-x86-64.zip
2.給數據庫軟件打PATCH
pri:orcl > ls -lrt
total 71268
drwxrwxr-x 11 oracle oinstall 4096 Jan 7 18:23 17540582
-rw-rw-r-- 1 oracle oinstall 69702 Jan 13 19:18 PatchSearch.xml
-rwxr-xr-x 1 oracle oinstall 72815847 Apr 14 09:34 oracle_database_psu_11.2.0.3.9_Linux-x86-64.zip
#我們看到有很多個patch,我以為進入最后一個patch來應用,前面的就會應用上。
pri:orcl > cd 17540582
pri:orcl > ls
13343438 13696216 13923374 14275605 14727310 16056266 16619892 16902043 17540582 patchmd.xml README.html README.txt
#opatch apply 發現出錯,報錯135
pri:orcl > opatch apply
Invoking OPatch 11.2.0.1.7
Oracle Interim Patch Installer version 11.2.0.1.7
Copyright (c) 2011, Oracle Corporation. All rights reserved.
Argument(s) Error... For the composite patch you have specified, the number of entries in the composite.xml does not equal the number of inventory.xml's. This could mean you are trying to apply the active constituent alone. Please supply the top-level directory of the composite patch, not one of its subdirectories, for opatch apply. If you still get this error after applying the top-level directory the composite patch may be improperly packaged.
Please check the arguments and try again.
OPatch failed with error code 135
#原來是version版本問題。根據自述文檔,是要11.2.0.3.0的opatch工具才行。
You must use the OPatch utility version 11.2.0.3.0 or later to apply this patch. Oracle recommends that you use the latest released OPatch version for 11.2, which is available for download from My Oracle Support patch 6880880 by selecting the 11.2.0.0.0 release.
pri:orcl > opatch version
Invoking OPatch 11.2.0.1.7
OPatch Version: 11.2.0.1.7
OPatch succeeded.
更新Opatch工具方法,需要從MOS上下載對應patch,然后覆蓋到ORACLE_HOME下的Opatch目錄即可。覆蓋之前最好備份下。
覆蓋完后:
pri:orcl > opatch version
OPatch Version: 11.2.0.3.6
OPatch succeeded.
再來一次。
pri:orcl > opatch apply
Oracle Interim Patch Installer version 11.2.0.3.6
Copyright (c) 2013, Oracle Corporation. All rights reserved.
Argument(s) Error... Illegal file format for composite patch. There is no composite.xml file. Either this composite patch is not packaged properly, or you are applying a constituent individually.
Please check the arguments and try again.
OPatch failed with error code 135
可能是我的Patch工具沒有安裝好,重新去看下自述文件。
How to install the utility:
---------------------------
To install this patch, Please extract the file "zipped file" using unzip or winzip,
depending upon the platform. You should extract the zip file directly under the
ORACLE_HOME. Please follow the following steps for extracting the zip file of OPatch.
(1) Please take a backup of $ORACLE_HOME/OPatch into a dedicated backup
location.
(2) Please remove the contents of $ORACLE_HOME/OPatch directory (Please do not
remove $ORACLE_HOME/OPatch directory itself)
(3) Please unzip the OPatch downloaded zip into $ORACLE_HOME directory.
我當時是沒備份,然后將整個OPatch目錄覆蓋了。懷疑是不是覆蓋掉了更多的東西,比如舊目錄下有composite.xml file這個文件。因為沒有備份,只有重新安裝11.2.0.3.0軟件,將OPatch目錄提取出來看看了。
后來發現,沒差別的。盡管我重新按照上面的3個步驟去做了,也一樣出現這個錯誤,讓我們再詳細看看這個錯誤。
pri:orcl2 > opatch apply
Oracle Interim Patch Installer version 11.2.0.3.6
Copyright (c) 2013, Oracle Corporation. All rights reserved.
Argument(s) Error... Illegal file format for composite patch. There is no composite.xml file. Either this composite patch is not packaged properly, or you are applying a constituent individually.
Please check the arguments and try again.
OPatch failed with error code 135
應該是這個PSU包沒有弄好的問題。是不是我的PSU是11.2.0.3.9,而opatch是11.2.0.3.6,opatch版本不夠級別呢?
想下載11.2.0.3.5或11.2.0.3.6的psu來驗證,但是已經沒得下載了,在MOS上只找到11.2.0.3.9的。
最后發現,原來opatch apply命令的執行路徑比較重要,下面這樣就行了。然后會將這些13343438-17540582的patch,都相繼打上。
pri:orcl2 > cd 17540582
pri:orcl2 > ls
13343438 13696216 13923374 14275605 14727310 16056266 16619892 16902043 17540582 patchmd.xml README.html README.txt
pri:orcl2 > 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.3.0
Central Inventory : /u01/app/oracle/oraInventory
from : /u01/app/oracle/product/11.2.0.3.0/oraInst.loc
OPatch version : 11.2.0.3.6
OUI version : 11.2.0.3.0
Log file location : /u01/app/oracle/product/11.2.0.3.0/cfgtoollogs/opatch/opatch2014-04-14_11-33-31AM_1.log
Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 13343438 13696216 13923374 14275605 14727310 16056266 16619892 16902043 17540582
Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.
Provide your email address to be informed of security issues, install and
initiate Oracle Configuration Manager. Easier for you if you use your My
Oracle Support Email address/User Name.
Visit http://www.oracle.com/support/policies.html for details.
Email address/User Name:
You have not provided an email address for notification of security issues.
Do you wish to remain uninformed of security issues ([Y]es, [N]o) [N]: Y
Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/11.2.0.3.0')
Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying sub-patch '13343438' to OH '/u01/app/oracle/product/11.2.0.3.0'
Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Patching component oracle.rdbms, 11.2.0.3.0...
Patching component oracle.rdbms.dbscripts, 11.2.0.3.0...
Verifying the update...
Applying sub-patch '13696216' to OH '/u01/app/oracle/product/11.2.0.3.0'
Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Patching component oracle.rdbms, 11.2.0.3.0...
Patching component oracle.sdo.locator, 11.2.0.3.0...
Patching component oracle.sysman.console.db, 11.2.0.3.0...
Patching component oracle.sysman.oms.core, 10.2.0.4.4...
Verifying the update...
Applying sub-patch '13923374' to OH '/u01/app/oracle/product/11.2.0.3.0'
ApplySession: Optional component(s) [ oracle.network.cman, 11.2.0.3.0 ] not present in the Oracle Home or a higher version is found.
Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Patching component oracle.rdbms, 11.2.0.3.0...
Patching component oracle.rdbms.dbscripts, 11.2.0.3.0...
Patching component oracle.network.rsf, 11.2.0.3.0...
Patching component oracle.network.listener, 11.2.0.3.0...
Patching component oracle.sysman.console.db, 11.2.0.3.0...
Verifying the update...
Applying sub-patch '14275605' to OH '/u01/app/oracle/product/11.2.0.3.0'
ApplySession: Optional component(s) [ oracle.precomp.lang, 11.2.0.3.0 ] not present in the Oracle Home or a higher version is found.
Patching component oracle.network.client, 11.2.0.3.0...
Patching component oracle.network.rsf, 11.2.0.3.0...
Patching component oracle.precomp.common, 11.2.0.3.0...
Patching component oracle.rdbms, 11.2.0.3.0...
Patching component oracle.rdbms.dbscripts, 11.2.0.3.0...
Patching component oracle.rdbms.rman, 11.2.0.3.0...
Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Patching component oracle.rdbms.util, 11.2.0.3.0...
Verifying the update...
Applying sub-patch '14727310' to OH '/u01/app/oracle/product/11.2.0.3.0'
Patching component oracle.rdbms, 11.2.0.3.0...
Patching component oracle.rdbms.dbscripts, 11.2.0.3.0...
Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Patching component oracle.sdo.locator, 11.2.0.3.0...
Patching component oracle.sysman.console.db, 11.2.0.3.0...
Patching component oracle.sysman.oms.core, 10.2.0.4.4...
Verifying the update...
Applying sub-patch '16056266' to OH '/u01/app/oracle/product/11.2.0.3.0'
ApplySession: Optional component(s) [ oracle.network.cman, 11.2.0.3.0 ] not present in the Oracle Home or a higher version is found.
Patching component oracle.network.listener, 11.2.0.3.0...
Patching component oracle.network.rsf, 11.2.0.3.0...
Patching component oracle.ovm, 11.2.0.3.0...
Patching component oracle.rdbms, 11.2.0.3.0...
Patching component oracle.rdbms.rman, 11.2.0.3.0...
Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Patching component oracle.sdo.locator, 11.2.0.3.0...
Patching component oracle.rdbms.deconfig, 11.2.0.3.0...
Verifying the update...
Applying sub-patch '16619892' to OH '/u01/app/oracle/product/11.2.0.3.0'
ApplySession: Optional component(s) [ oracle.precomp.lang, 11.2.0.3.0 ] not present in the Oracle Home or a higher version is found.
Patching component oracle.marvel, 11.2.0.3.0...
Patching component oracle.precomp.common, 11.2.0.3.0...
Patching component oracle.rdbms, 11.2.0.3.0...
Patching component oracle.rdbms.rman, 11.2.0.3.0...
Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Patching component oracle.sysman.agent, 10.2.0.4.3...
Patching component oracle.sysman.console.db, 11.2.0.3.0...
Patching component oracle.sysman.repository.core, 10.2.0.4.4...
Patching component oracle.xdk, 11.2.0.3.0...
Patching component oracle.xdk.parser.java, 11.2.0.3.0...
Patching component oracle.xdk.rsf, 11.2.0.3.0...
Verifying the update...
Applying sub-patch '16902043' to OH '/u01/app/oracle/product/11.2.0.3.0'
ApplySession: Optional component(s) [ oracle.idm.oid, 11.2.0.3.0 ] not present in the Oracle Home or a higher version is found.
Patching component oracle.ldap.rsf, 11.2.0.3.0...
Patching component oracle.ldap.rsf.ic, 11.2.0.3.0...
Patching component oracle.owb.rsf, 11.2.0.3.0...
Patching component oracle.rdbms, 11.2.0.3.0...
Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Patching component oracle.sysman.console.db, 11.2.0.3.0...
Verifying the update...
Applying sub-patch '17540582' to OH '/u01/app/oracle/product/11.2.0.3.0'
ApplySession: Optional component(s) [ oracle.precomp.lang, 11.2.0.3.0 ] not present in the Oracle Home or a higher version is found.
Patching component oracle.rdbms, 11.2.0.3.0...
Patching component oracle.rdbms.rsf, 11.2.0.3.0...
Patching component oracle.sdo, 11.2.0.3.0...
Patching component oracle.ldap.rsf, 11.2.0.3.0...
Patching component oracle.precomp.common, 11.2.0.3.0...
Patching component oracle.ordim.client, 11.2.0.3.0...
Patching component oracle.rdbms.util, 11.2.0.3.0...
Patching component oracle.rdbms.dbscripts, 11.2.0.3.0...
Patching component oracle.sdo.locator, 11.2.0.3.0...
Patching component oracle.rdbms.rman, 11.2.0.3.0...
Patching component oracle.ordim.jai, 11.2.0.3.0...
Verifying the update...
OPatch found the word "warning" in the stderr of the make command.
Please look at this stderr. You can re-run this make command.
Stderr output:
ins_precomp.mk:19: warning: overriding commands for target `pcscfg.cfg'
/u01/app/oracle/product/11.2.0.3.0/precomp/lib/env_precomp.mk:2160: warning: ignoring old commands for target `pcscfg.cfg'
/u01/app/oracle/product/11.2.0.3.0/precomp/lib/ins_precomp.mk:19: warning: overriding commands for target `pcscfg.cfg'
/u01/app/oracle/product/11.2.0.3.0/precomp/lib/env_precomp.mk:2160: warning: ignoring old commands for target `pcscfg.cfg'
OPatch found the word "warning" in the stderr of the make command.
Please look at this stderr. You can re-run this make command.
Stderr output:
ins_emagent.mk:113: warning: overriding commands for target `nmosudo'
ins_emagent.mk:52: warning: ignoring old commands for target `nmosudo'
/u01/app/oracle/product/11.2.0.3.0/sysman/lib/ins_emagent.mk:113: warning: overriding commands for target `nmosudo'
/u01/app/oracle/product/11.2.0.3.0/sysman/lib/ins_emagent.mk:52: warning: ignoring old commands for target `nmosudo'
Composite patch 17540582 successfully applied.
OPatch Session completed with warnings.
Log file location: /u01/app/oracle/product/11.2.0.3.0/cfgtoollogs/opatch/opatch2014-04-14_11-33-31AM_1.log
OPatch completed with warnings.
#查看成果,的確是PSU到這個地步了。
pri:orcl2 > $ORACLE_HOME/OPatch/opatch lsinventory -invPtrLoc $ORACLE_BASE/oraInst.loc -bugs_fixed | egrep 'PSU|PATCH SET UPDATE'
17540582 17540582 Mon Apr 14 11:37:32 CST 2014 DATABASE PATCH SET UPDATE 11.2.0.3.9 (INCLUDES CPU
16902043 16902043 Mon Apr 14 11:37:18 CST 2014 DATABASE PATCH SET UPDATE 11.2.0.3.8 (INCLUDES CPU
17230530 16902043 Mon Apr 14 11:37:18 CST 2014 ORA-600 [KKZQID2FRO] AFTER APPLY 11.2.0.3.7 PSU PA
16619892 16619892 Mon Apr 14 11:36:52 CST 2014 DATABASE PATCH SET UPDATE 11.2.0.3.7 (INCLUDES CPU
16056266 16056266 Mon Apr 14 11:36:25 CST 2014 DATABASE PATCH SET UPDATE 11.2.0.3.6 (INCLUDES CPU
16368108 16056266 Mon Apr 14 11:36:25 CST 2014 RUNNING OWMV1120.PLB IN PSU 112036 GIVING ORA-0095
14727310 14727310 Mon Apr 14 11:36:14 CST 2014 DATABASE PATCH SET UPDATE 11.2.0.3.5 (INCLUDES CPU
14275605 14275605 Mon Apr 14 11:35:35 CST 2014 DATABASE PATCH SET UPDATE 11.2.0.3.4 (INCLUDES CPU
13923374 13923374 Mon Apr 14 11:35:29 CST 2014 DATABASE PATCH SET UPDATE 11.2.0.3.3 (INCLUDES
13696216 13696216 Mon Apr 14 11:35:07 CST 2014 DATABASE PATCH SET UPDATE 11.2.0.3.2 (INCLUDES
13343438 13343438 Mon Apr 14 11:34:19 CST 2014 DATABASE PATCH SET UPDATE 11.2.0.3.1
再研究一下,用11.2.0.3.0的軟件,是可以打開11.2.0.3.9的數據dbf文件的。
2.Loading Modified SQL Files into the Database
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT
回退:
1.我們先找出
@catbundle_PSU_
_ROLLBACK.sql
pri:orcl5 > ls | grep catbundle
catbundle_PSU_ORCL5_APPLY.sql
catbundle_PSU_ORCL5_ROLLBACK.sql
catbundle.sql
pri:orcl5 > pwd
/u01/app/oracle/product/11.2.0.3.0/rdbms/admin
shut immediate--關庫
任意目錄下, opatch rollback -id 17540582
sqlplus '/as sysdba'
startup
@?/rdbms/admin/catbundle_PSU_ORCL5_ROLLBACK.sql
SQL> set linesize 140
SQL> set pages 9999
SQL> col NAME for a12;
SQL> col PLATFORM_NAME for a24;
SQL> col action_time for a20;
SQL> col action for a26;
SQL>
SQL> select d.NAME,d.PLATFORM_NAME,
2 to_char(r.action_time, 'yyyy-mm-dd hh24:mi:ss') as action_time,
3 r.action||' ' ||'PSU :' || r.version || '.'||r.id as action,
4 decode (r.version || '.'||r.id,'11.2.0.3.5','Y','N') as upgraded
5 from dba_registry_history r, v$database d
6 where r.action_time = (select max(action_time) from dba_registry_history) ;
NAME PLATFORM_NAME ACTION_TIME ACTION UPG
------------ ------------------------ -------------------- -------------------------- ---
ORCL5 Linux x86 64-bit 2014-04-15 11:18:46 APPLY PSU :11.2.0.3.0 N
1 row selected.
所以總結下來,我們的步驟是分成兩步,第一步是給軟件打patch,然后再對數據庫dbf文件對一些數據字典等的修改。第一步需要聽庫處理,第二步是open庫后處理。回退也是先弄軟件,再弄數據庫。
看PSU的自述文檔是最重要的。