Oracle資料庫PSU補丁安裝
任何軟體都存在缺陷或者bug,出現問題後一般透過補丁解決。Oracle也不例外,對於一個全新的oracle資料庫,在正式投入生產前,進行較新補丁或者補丁集安裝時很有必要的。因為Oralce補丁概念以及分類繁多,進入正題之前先對其進行簡單的瞭解。
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)
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派上用場
原來某個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升級驗證成功。
補丁分類介紹
參考: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派上用場
點選(此處)摺疊或開啟
- oracle@linux-qtx3:~/16056266> fuser /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1
- /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1: 14749m
- oracle@linux-qtx3:~/16056266> lsof /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- sqlplus 14749 oracle mem REG 8,2 52863778 1501333 /u01/app/oracle/product/11.2.0/db_1/lib/libclntsh.so.11.1
上述輸出日誌中可能包含以下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分鐘左右。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 資料庫 PSU 的補丁號變化Oracle資料庫
- [Oracle] CPU/PSU補丁安裝詳細教程Oracle
- Oracle 11.2.0.4 RAC安裝最新PSU補丁Oracle
- Oracle DG/ADG上CPU/PSU補丁安裝Oracle
- 摘:Oracle資料庫補丁分類、安裝及管理Oracle資料庫
- PSU補丁安裝不全的問題
- oracle 資料庫版本對應的psu和補丁號碼Oracle資料庫
- 檢查資料庫CPU和PSU補丁資訊資料庫
- oracle資料庫高危漏洞補丁集安裝Oracle資料庫
- Oracle 安裝補丁Oracle
- Oracle補丁術語介紹 PSU CPU補丁Oracle
- 關於 Oracle 資料庫 PSU/SPU/Bundle Patch的補丁號變化Oracle資料庫
- 補丁集PSU、Bundle Patch大致安裝步驟
- Oracle資料庫打補丁方法Oracle資料庫
- 資料庫Oracle 11g RAC手動打GI PSU補丁(11.2.0.4.8)資料庫Oracle
- 【UP_ORACLE】如何給Oracle DG打補丁(二)備庫安裝補丁步驟Oracle
- 【UP_ORACLE】如何給Oracle DG打補丁(三)主庫安裝補丁步驟Oracle
- oracle安裝補丁失敗Oracle
- oracle 資料庫 PSU,SPU(CPU),Bundle Patches 和 Patchsets 補丁號碼快速參考Oracle資料庫
- Oracle資料庫升級與補丁Oracle資料庫
- 給Oracle資料庫打補丁(轉)Oracle資料庫
- 資料庫補丁索引資料庫索引
- 打Oracle 10.2.0.3.0補丁前安裝了資料庫,需要執行以下步驟Upgrade資料庫Oracle資料庫
- Oracle CRS Database安裝10.2.0.5.0補丁OracleDatabase
- Oracle PSU (Patch Set Update)- 10g補丁列表及如何檢視補丁Oracle
- Oracle將釋出新的資料庫補丁程式Oracle資料庫
- 資料庫 PSU,SPU(CPU),Bundle Patches 和 Patchsets 補丁號碼快速參考資料庫
- 怎麼樣安裝AIX 補丁或者補丁集AI
- oracle opatch 工具的使用(oracle小補丁安裝)(轉)Oracle
- Oracle 11g RAC自動打GI PSU補丁Oracle
- Oracle 補丁那些事兒(PS、PSU、CPU、SPU、BP、DBBP…)Oracle
- oracle_如何打11GR2 RAC PSU補丁Oracle
- Oracle Database常用補丁集Patch號及各版本PSUOracleDatabase
- Oracle 11.2.0.4 RAC psu補丁升級至11.2.0.4.2Oracle
- OJVM+GI PSU補丁升級JVM
- weblogic 12 補丁安裝Web
- was6.1補丁包安裝
- PSU簡介和11.2.0.2.9 PSU補丁操作日誌