Oracle資料庫PSU補丁安裝

13811135929發表於2017-03-21
任何軟體都存在缺陷或者bug,出現問題後一般透過補丁解決。Oracle也不例外,對於一個全新的oracle資料庫,在正式投入生產前,進行較新補丁或者補丁集安裝時很有必要的。因為Oralce補丁概念以及分類繁多進入正題之前先對其進行簡單的瞭解。

補丁分類介紹

   參考:References: New Patch Nomenclature for Oracle Products [ID 1430923.1]
1.Release
    標準產品釋出,如Oracle Database 11g Release 2的第一個發行版本為11.2.0.1。關於Release對應的格式說明,官方文件有相關說明:
    
2.Critical Patch Update
    俗稱CPU,主要為了修復安全方面的補丁,每季度釋出一次。自2012年10月起,CPU更名為Security Patch Update(SPU)
     
3.Patch Set Update
    這個就是俗稱的PSU,每季度更新一次。Oracle選取每季度使用者下載數量最多,並且驗證為較低風險的補丁放到每季度的PSU中,修復比較嚴重的一些問題。PSU中包含每季度的CPU,且是累積型的。
      
    雖然在描述PSU的時候會用到資料庫版本第5位,比如Database PSU 11.2.0.3.5,但實際上打完PSU後並不會真正改變資料庫的版本,從v$version中看到的版本還是4位的(11.2.0.3.0),第5位仍然是
0
4.Bundle Patch
    Windows和Exadata沒有CPU(SPU)和PSU,對於這兩種環境,Oracle使用Bundle Patch來代替PSU。
5.Composite Patch
   2012年新推出的概念,這是一種新型的補丁包,不同於其他的累積型補丁包。如果是第一次安裝Composite Patches,那麼該Composite Patches所包括的全部補丁都會被安裝,後續安裝的Composite Patches,只會安裝對比前一次Composite Patches有變化的部分和新增加的補丁。 新的Composite Patches格式,使以前PSU應用的overlay patches和新安裝的PSU並存成為可能
  Patch  16056266     : applied on Wed Jun 05 00:14:09 GMT+08:00 2013 
Unique Patch ID:  15978825 
Patch description:  "Database Patch Set Update : 11.2.0.3.6 (16056266)"                               ===>變化或者新增部分
   Created on 13 Mar 2013, 05:49:56 hrs PST8PDT 
Sub-patch  14727310; "Database Patch Set Update : 11.2.0.3.5 (14727310)"                        ===>Sub-patch已經安裝的部分
Sub-patch  14275605; "Database Patch Set Update : 11.2.0.3.4 (14275605)"                        ===>Sub-patch已經安裝的部分
Sub-patch  13923374; "Database Patch Set Update : 11.2.0.3.3 (13923374)"                        ===>Sub-patch已經安裝的部分
Sub-patch  13696216; "Database Patch Set Update : 11.2.0.3.2 (13696216)"                        ===>Sub-patch已經安裝的部分
Sub-patch  13343438; "Database Patch Set Update : 11.2.0.3.1 (13343438)"                     ===>Sub-patch已經安裝的部分

現階段PSU,SPU(CPU)以及Bundle Patch請調閱oracle官方文件:
Quick Reference to Patch Numbers for Database/GI PSU, SPU(CPU), Bundle Patches and Patchsets (文件 ID 1454618.1)

PSU升級補丁

全新的資料庫安裝好後,一般透過PSU(Composite Patch)進行補丁的安裝或升級,下面利用測試環境進行實驗:
1)現在環境:

opatch lsinventory輸出資訊如下:


2)升級步驟
計劃升級到Oracle 11.2.0.3 PSU6,根據作業系統類別登入官網下載介質:p16056266_112030_Linux-x86-64.zip
根據文件說明進行升級
a)關閉資料庫例項,若多個例項,請逐個關閉
 ps -ef | grep pmon                       ---確定例項個數
 export ORACLE_SID=SID_NAME
 sqlplus / as sysdba
 shutdown immediate;
b)關閉監聽
    lsnrctl stop
c)設定環境變數
  export PATH=$PATH:$ORACLE_HOME/OPatch:/usr/ccs/bin
  export LANG=C
d)衝突檢測
  unzip p16056266_112030_Linux-x86-64.zip 
  opatch prereq CheckConflictAgainstOHWithDetail -ph 16056266
  上述命令執行後,報"OPatch failed with error code 135",經確認為OPatch版本太低造成。
  經OPatch版本升級為11.2.0.3.4(OPatch具體升級步驟及介質請自行官網下載),再次進行衝突檢測,無報錯。
  
e)安裝補丁
cd 16056266
opatch apply

本來以為很順利呢,結果opatch apply命令回車後,還是報錯了。很奇怪,instance和listener都事先關閉了,怎麼還提示佔用。
下面fuser、lsof派上用場

點選(此處)摺疊或開啟

  1. oracle@linux-qtx3:~/16056266> fuser /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1
  2. /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1: 14749m
  3. oracle@linux-qtx3:~/16056266> lsof /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1
  4. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
  5. sqlplus 14749 oracle mem REG 8,2 52863778 1501333 /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1
原來某個sqlplus還在訪問libclntsh.so.11.1,資料庫例項已經shutdown了,sqlplus再連線也沒有什麼用了,退出sqlplus,再次執行opatch apply

上述輸出日誌中可能包含以下warning,參考mos文章(Opatch warning: overriding commands for target xxxx (文件 ID 1448337.1))可忽略。
ins_precomp.mk:19: warning: overriding commands for target `pcscfg.cfg'
/u01/app/oracle/product/11.2.0/db_1/precomp/lib/env_precomp.mk:2160: warning: ignoring old commands for target `pcscfg.cfg'
/u01/app/oracle/product/11.2.0/db_1/precomp/lib/ins_precomp.mk:19: warning: overriding commands for target `pcscfg.cfg'
/u01/app/oracle/product/11.2.0/db_1/precomp/lib/env_precomp.mk:2160: warning: ignoring old commands for target `pcscfg.cfg'
因機器配置不同,opatch apply執行時間相異,本測試環境整個過程大約5分鐘左右。
f)執行指令碼進行例項升級,若多個例項,請逐個升級
 export ORACLE_SID=SID_NAME
 sqlplus / as sysdba
 SQL>startup;
 SQL>@?/rdbms/admin/catbundle.sql psu apply
 SQL>@?/rdbms/admin/utlrp.sql

3)升級驗證
安裝好補丁後,透過如下命令來檢視已安裝的補丁:
opatch inventory
若輸出以下資訊證明安裝成功。
Interim patches (1) :


Patch  16056266     : applied on Tue Mar 21 03:01:46 GMT-05:00 2017
Unique Patch ID:  15962803
Patch description:  "Database Patch Set Update : 11.2.0.3.6 (16056266)"
   Created on 12 Mar 2013, 02:14:47 hrs PST8PDT
Sub-patch  14727310; "Database Patch Set Update : 11.2.0.3.5 (14727310)"
Sub-patch  14275605; "Database Patch Set Update : 11.2.0.3.4 (14275605)"
Sub-patch  13923374; "Database Patch Set Update : 11.2.0.3.3 (13923374)"
Sub-patch  13696216; "Database Patch Set Update : 11.2.0.3.2 (13696216)"
Sub-patch  13343438; "Database Patch Set Update : 11.2.0.3.1 (13343438)"

另外也可查詢dba_registry_history進行確認,下圖中新增了一條PSU 11.2.0.3.6的記錄。



至此,整個PSU升級驗證成功。


 









來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29827284/viewspace-2135768/,如需轉載,請註明出處,否則將追究法律責任。

相關文章