Oracle 補丁那些事兒(PS、PSU、CPU、SPU、BP、DBBP…)

studywell發表於2018-07-13



 

1.  轉自

 

References :

Oracle Database – 資料庫補丁使用方法概述 (文件 ID 2227021.1)
ORACLE DATABASE 12C: PSUS VS DATABASE PROACTIVE BUNDLE PATCHES

 

 

 

2.  補丁介紹

當前ORACLE資料庫提供兩種方式的補丁一種是主動的Proactive Patches和另一種被動的Reactive Patches,其中Reactive Patches是指過去的ONE-OFF Patch,而過去的PSU,SPU/CPU,BP都是Proactive Patches。從12c(12.1.0.2)起資料庫又提供了一個名為DBBP的補丁型別,在資料庫安裝選擇補丁時建議是PSU,CPU,DBBP中的一種,在12c以前至少是安裝相應版本的PSU,而從12.1.0.2起想要安裝更全的補丁集應該選擇DBBP,DBBP更是一種趨勢,以後可能會替代PSU,就像以前的CPU後改名為SPU,安裝SPU建議以PSU的方式一樣,DBBP成了更大的超集,下面來整理一份資料庫相關的補丁術語及注意事項。

patch number改變

從2015年11月開始資料庫相關的PSU,SPU,BP的版本號第5位發生改變,如11204的PSU的11.2.0.4.8下個版本不再是11.2.0.4.9,而是11.2.0.4.160119, 格式是與釋出日期相關的YYMMDD,年份的後兩位月份和日期。方便查詢PATCH的時間段。更多資訊關注Doc ID 2061926.1

SPU/CPU改變

從12.1.0.1開始資料庫提供安全相關的修復不再單獨以SPU的形式釋出,而是以PSU或DBBP打包的方式集中修復,這種方式也更為簡單,PSU從2009年起就是ORACLE主動修改首選,也許會從2016年後DBBP會成為首選(linux/unit)。更多資訊關注1581950.1

BP FOR EXADATA AND DBIM改變

從2016年4月 Database Patch for Engineered Systems and Database In-Memory Bundle Patch (BP) ”改名為 “Database Proactive Bundle Patch”. 也就是DBBP,不再僅限於EXADATA系統,你也許會話如果以字母簡寫更應該呢DPBP或者是PBP for DB, “Database Proactive Bundle Patch”更是多個PSU的超集,包含了GI PSU、DB PSU及EXPDATA和DBIM的相關修復,從dba_registry_sqlpatch檢視中可以看到Database Bundle Patch (DBBP) 區別於原來的PSU,也就是從12.1.0.2以後Database Proactive Bundle Patch可以應用於所有資料庫環境。另外DBBP僅用於LINUX和UNIX環境,與WINDOWS 的BP沒有關係, Windows平臺還繼續使用Bundle Patch (Windows 32bit & 6bit). 更多資訊關注Note 1937782.1

如何選擇最新的補丁?

檢視Assistant: Download Reference for Oracle Database PSU, SPU(CPU), Bundle Patches, Patchsets and Base Releases (Doc ID 2118136.2)
另外SPU, PSU ,DBBP不相容,更換補丁方法要檢查衝突,回滾之前的衝突,如安裝DBBP不能基於上一季度的PSU。

1) SPU contains only the CPU program security fixes

2)PSU contains the CPU program security fixes and additional high-impact/low-risk critical bug fixes

3)Proactive Bundle Patch (PBP) includes all PSU fixes along with fixes targeted at the specific Bundle Patch environment.

4)PSU –  Can be applied on Database Servers, Client-Only and  Instant Client.

5)GI PSU – Can be applied on GI Home (Oracle Restart or Oracle Clusterware) in conjunction with RAC, RACOne,  Single Instance home, Client-Only and  Instant Client.

6)Proactive Bundle Patch – Can be applied on GI Home in conjunction with RAC, RACOne, or Single Instance home, Client-Only and  Instant Client.

 

 

3.  補丁的術語

3.1.  Release Release:

版本的前2個欄位指定(小數點分隔的欄位)如ORACLE 10gR1 10gR2 , 11gR1 11gR2, 12cR1 12cR2…

 

3.2.  Base/Major Release

版本的前4個欄位, 如11.2.0.1, 可以在OTN、edelivery等站點上公開下載,

 

3.3.  Patch Set Release

就是早期大家常說的PSR。這是在主版本號上釋出的補丁集,版本的第4個欄位指定,如11.2.0.4,修復了較多的Bug,可能會包含一些增強功能(Enhancement)。比如11.2.0.1是一個主版本,那麼11.2.0.2、11.2.0.3就是2個不同的Patch set。這種補丁集經過了嚴格的整合測試,也是累積型的。所以推薦安裝最新的Patch Set。

 

3.4.  Database Patch Set Update

就是DBA&DMA們常論道的PSU.Oracle 選取在每個季度使用者下載數量最多,並且得到驗證具有較低風險的補丁放入到每個季度的PSU中,修復比較嚴重的一些問題,包含每個季度的CPU,是累積型的。針對資料庫以及資料庫客戶端的重要修復。包括安全(CPU)內容。沒有最佳化器修復,雖然在描述PSU的時候會用到資料庫版本第5位,但實際上打完PSU後並不會真正改變資料庫的版本,需要從opatch lsinv確認

¤ 注意

(1) Windows上沒有CPU和PSU,對於Windows和Exadata,Oracle使用Bundle Patch代替PSU,Bundle Patch會包含PSU的內容

(2) 在11G之前有些PSU可以直接安裝,而有些PSU則必須要求安裝了上一個版本的PSU之後才能繼續安裝。比如對於10.2.0.4版本的資料庫來說,PSU 10.2.0.4.4可以直接安裝在最原始的10.2.0.4.0版本中,而最新的PSU 10.2.0.4.8則必須要求先安裝10.2.0.4.4。更多資訊參考PSU 附帶的readme.txt

(3)從11.2.0.2版本開始,一個新的補丁策略被引入,11.2.0.1之後釋出的Patch Set本身就是一個完整的安裝包,不再需要基礎的Release 版本安裝。

站點中Oracle Recommended Patches — Oracle Database [ID 756671.1] 文件中查到各個產品版本最新的PSU。

檢視PSU

$opatch lsinventory -bugs_fixed | grep -i ‘DATABASE PSU’

# 11g r2 and above

$ opatch lsinventory | grep “Patch Set Update”

 

3.5.  Database Grid Infrastructure Patch Set Update

也就是GI PSU,適用於11.2.0.1以上的RAC DB 安裝在 Unix 平臺上 (包括單例項 RAC)。補丁包括 Grid Infrastructure 的重要修復,也包括匹配的 DB PSU,但不包括任何 OJVM PSU,季度發行,在11.2以前叫CRS PSU,從11.2後不再發行。

 

3.6.  OJVM Patch Set Update

也就沒是OJVM PSU, 適用於資料庫版本DB 版本 11.1.0.7,11.2.0.3,11.2.0.4,12.1.0.1 及以上所有平臺。須知 Windows 平臺有特殊的 OJVM PSU 覆蓋補丁安裝於 Windows BP 上,2014年10月提出 OJVM PSU,但是 OJVM 和 JDBC 有單獨的補丁。

2015年1月之後 OJVM PSU 包括 JDBC 針對資料庫的修復在12c中的DBBP中包含了OJVM PSU。

 

3.7.  Timezone Patches

DB 和 DB client 安裝,當對最新時區資料要求很高時,補丁僅包含時區資料,每半年發行一次。

 

3.8.  Critical Patch Update

Oracle在2005年開始引入的產品安全更新策略,CPU最早的雛形出現在2005年,該專案致力於為客戶週期性地提供累積性的補丁以修復安全漏洞。沒有一個強制要求安裝CPU的理由,Oracle僅僅是強烈推薦實施這些補丁以降低潛在的安全風險並降低受到駭客入侵成功的機率, 由月/年指定 如11.2.0.4 Jan 2015 SPU

¤ 這個指的就是CPU補丁。每季度釋出一次,用來修復安全方面的一些補丁,是累積型的。目前(2012年10月)已經更名為Security Patch Update (SPU)

¤ 這類問題本來不屬於軟體錯誤,在正常使用中不會出現任何問題。但是別有用心的人可以透過執行非常精巧設計的程式碼 ,繞過資料庫系統的安全管理機制,達到非授權存取的目的。

分為Normal CPU和Molecular CPU(最早是從10.2.0.3 CPUJUL2007)For LINUX/UNIT 平臺, CPU Bundle Patch For Windows平臺

¤ 重要補丁公告參見這裡.

PSU包含了最新的CPU, 從12.1.0.1開始CPU不再單獨釋出而是包含在PSU中釋出。

 

3.9.  Interim Patch/One-Off Patch

是我們常說的小補丁,為了修復某(幾)個Bug而釋出的補丁。這種補丁推薦在測試庫上測試無誤後再安裝在生產庫上。

 

3.10.    Merged Patch

合併的補丁。當幾個小補丁之間有衝突,不能同時安裝的時候,需要提供這種Merged Patch。補丁衝突主要是由於2個或者多個補丁修改同一個檔案,但是修改的內容是不同的。

 

3.11.    “Quarterly Full Stack Download Patch” / “Combo Patch”

若干不同的補丁打包在一起釋出,適用於DB 版本 11.1.0.7,11.2.0.3,11.2.0.4,12.1.0.1 及以上,2014年10月開始每季度發行一次, 在一個下載中包括不同元件的 Patch Set Updates。例如:”Quarterly Full Stack Download Patch for Exadata” 把 “Quarterly Database Patch for Exadata”與 OJVM PSU 還有其他的 Exadata系統補丁包含在一個下載連結中。

 

3.12.    Windows Bundle Patch(BP)

僅適用於WINDOWS平臺的補丁集修復多個Bug。在Windows平臺上的Oracle沒有小補丁,只有這種Bundle Patch。 這種累積型的補丁集會週期性的釋出(至少每季一次),也就是每個Bundle Patch會包含之前所有的Bundle Patch。比如Windows Bundle Patch 16,它會包含之前所有15個Bundle Patch,所以我們總是推薦安裝最新的Bundle Patch。Oracle的叢集軟體和資料庫軟體的Window Bundle Patch是同一個,比如Windows Bundle Patch 16(補丁號16167942,既可以打在叢集上,也可以打在資料庫上) , 每季度會包含 DB PSU 和 OJVM PSU 內容。

■要了解Windows Bundle Patch的補丁號,可以參考MOS文件:
Note 161549.1 Oracle Database, Networking and Grid Agent Patches for Microsoft Platforms

 

3.13.    Diagnostic Patch

診斷補丁。顧名思義,這類補丁不是用來解決問題的,而是用來尋找問題的原因的。這類補丁只在Oracle技術支援部門要求安裝時,才需要安裝。在得到需要的診斷資訊後 ,應立即解除安裝這一補丁。

 

3.14.    Composite Patch

¤ 從2012年4月份的Database PSU 11.2.0.3.211.2.0.2.0.7開始,推出一種新的概念叫Composite Patches。 這是一種新型的補丁包,它不同於其他的累積型補丁包。如果是第一次安裝Composite Patches,那麼該Composite Patches所包括的全部補丁都會被安裝,後續安裝的Composite Patches,只會安裝對比前一次Composite Patches有變化的部分和新增加的補丁。

¤ Composite Patche改進包括減少補丁安裝時間,減少回滾以前應用的overlay patches的需要。 新的Composite Patches格式,使以前PSU應用的overlay patches和新安裝的PSU並存成為可能。更多資訊,請參考Document 1376691.1 ‘Composite Patches for Oracle Products’ 和Oracle Database Support NEWS April edition.

■ PSU就是一種Composite Patch

¤第一次安裝的composite patch為PSU 11.2.0.3.5:
Installed Top-level Products (1):

Oracle Database 11g 11.2.0.3.0
There are 1 products installed in this Oracle Home.

Interim patches (1) :

Patch 14727310: applied on Fri Dec 09 10:59:28 EST 2011
Patch Description: “Database Patch Set Update : 11.2.0.3.5 (14727310)”     <==變化和新增的部分
Created on 14 Jan 2013, 07:56:00 hrs PST8PDT
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
Bugs fixed:
13566938, 13593999, 10350832, 14138130 …
¤安裝下一個composite patch PSU 11.2.0.3.6時,只需要安裝有變化的部分和新增加的patches,不需要再安裝之前已經安裝的11.2.0.3.1 、11.2.0.3.2,11.2.0.3.4和11.2.0.3.5,之前已經安裝的這部分就稱為sub-patch
Patch 16056266: applied on Sun Apr 28 12:42:57 CST 2013
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

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

Bugs fixed:
13616375, 14035825, 12861463, 12834027, 15862021, 13632809, 13377816 …
¤在MOS文件中有針對Composite Patches詳細的說明:Note 1376691.1 Composite Patches for Oracle Products

 

3.15.    Database Patch for Exadata

也叫EXADBBP 或BP,僅用於exadata machine ORACLE 11G,每月發行, 每月重要 的BP都會放在本季度的Quarterly Full Stack Download Patch for Exadata

 

3.16.     Quarterly Full Stack Download Patch for Exadata

QFSDP for Exadata,同樣也是僅用於EXADATA MACHINE ORACLE 11G, 每季度發行,包括 Exadata 上的資料庫補丁以及其他 Exadata 元件的補丁。

不可用於非EXADATA系統。大多數更新都是專門為 Exadata 上的 Oracle Database (DB_BP) 和 Oracle Clusterware (GI_BP) 建立的 Bundle patches 發行的。Bundle patches 包含的不是 Exadata 特定程式碼,但是,只能在用於測試目的,或者是為Exadata 系統提供災難恢復支援的時候,才可以在 non-Exadata 系統上安裝這些補丁。只有當 non-Exadata 系統用在 Data Guard 環境中作為 Exadata 系統的備用系統時,Oracle 才為 non-Exadata 系統提供在 Exadata bundle patches 基礎上的臨時修復。

 

3.17.     Database Proactive Bundle Patch

適用於12c 資料庫安裝在 Exadata 上,同樣適用於任何使用 Database In-Memory (DBIM) 特性的 12c 系統,RAC 或 non-RAC。資料庫和 Grid 的 home 也適用。僅用於 12.1.0.2 及以上 DB on linux/unix平臺,從1937782.1可以看出在2016年4月前的補丁都是叫for Engineered Systems and DB In-Memory, 釋出週期為每個月一次,截至2016年4月,Database Patch for Engineered Systems and Database In-Memory 已重新命名為”Database Proactive Bundle Patch”,不再只限於Engineered Systems and DB In-Memory,可以用於EXADATA也可以用於非EXADATA,和RAC及非RAC系統。為每季度釋出一次,成為了一種新型的季度補丁,也是累計型,版本的第5個欄位指定,”Database Proactive Bundle Patch”比Patch Set Update (PSU) 需要多一些測試,因為它提供了大量的修復.

¤DBBP就PSU的 超集,BP是增量包含的如10,包含1-9,也包含了建立BP時最近的PSU和CPU,所以建議安裝最新的BP, 準確應該是說包含了PSU,CPU修復的問題。

¤最新的BP  latest Bundle Patch can be found in the MOS note 21188742.8 or in the Mos note: 12.1.0.2 Bundle Patches for Engineered Systems and DB In-Memory (Doc ID 1937782.1).

¤For In-Memory customers we recommend that you always run with the latest Bundle Patch!

¤重要的一點是12C的DBBP和以前的 “Windows Bundle Patch” (BP)沒有直接關係,windows 還是繼續使用之前的WINDOWS BP.

新的DBBP在單獨的子目錄中所含下列元件:

* Clusterware component the same as GI PSU

* ACFS component the same as GI PSU

* 一個資料庫bundle 元件包含了所有的PSU修復補丁及並且“以及專門針對Engineered Systems and DB In-Memory的額外修復”

¤雖然DBBP是包含了多個PSU和BUG FIXED,但是DBBP不能是基於上一季度的PSU繼續安裝,反之亦然,所以如果切換DBBP和PSU的補丁安裝技術需要提前rollback有衝突的PSU, 這樣做需要更我的時間視窗和停機時間。

如果下載同期的DBBP和PSU 會發現裡面的子補丁存在互斥, 在DBBP的readme中會看到DBBP明確是增量的包含了所有的PSU和CPU,雖然子補丁號不同 但是安裝後使用opatch lsinventory -bugs_fixed 會發現DBBP會包含了同期PSU修得的所有BUG,還能找到一些fixed的BUG在DBBP中,而沒有在PSU中 。除此之外,“Proactive”DBBP包含Non-Engineered Systems或DBIM時影響RDBMS的PSU中未包含修復的錯誤。  dba_registry_sqlpatch檢視的欄位BUNDLE_SERIES可以看到安裝的PATCH是PSU還是DBBP. 前面所指的都是ORACLE企業版,在有些DBBP的readme中可能會寫標準版還是應該安裝PSU,注意是“應該”而不是“必須”.

o   該 bundle 的修復資訊可能包括一些”Exadata”特定的修復,這是因為 bundle 同樣適用於 Exadata 系統。

o   詳情請參閱 Note 1937782.1 12.1.0.2 Database Proactive Bundle Patches / Bundle Patches for Engineered Systems and DB In-Memory – List of Fixes in each Bundle – 每個 bundle 的修復列表。


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

相關文章