Oracle patch也即是Oracle補丁。Oracle補丁又包含好幾個種類,小的補丁簡直是難以數計,難免讓人眼花繚亂。盡管如此,Oracle patch還是有序可循的。而且Oracle提供的opatch工具非常方便的用於安裝oracle patch,以及查看當前系統已經安裝的patch。本文列出了patch的幾種類型,以及主要描述通過opatch工具查看當前數據庫的patch應用的情況。對於如何apply patch可參考Oracle官方文檔。
1、Oracle patch類型One-off patches (e.g. a bug fix)
One-off patches也稱之為一次性補丁,通常針對特定的版本數據庫或運行平台。此類補丁通常較小,使用的最為頻繁
One-off patch只需要用Opatch工具apply即可,不需要升級/修正數據字典
如在數據庫使用過程中出現某些異常后如較常見的ORA-00600、ORA-07445錯誤等可以通過一次性補丁來搞定
Critical Patch Update (CPU)
簡稱CPU,一般來說CPU包含了Oracle產品安全漏洞的修復補丁集(set of security bug fix),通常一年發布四期
該類patch的安裝和安裝one-off patch一樣,同樣使用”opatch apply”命令來完成
安裝完成后應針對既有的數據庫(已經創建在使用的數據庫),應在數據庫級別運行數據字典升級腳本
Bundled patches (For Windows and Exadata only)
用於解決在Windows平台無法利用替換共享庫文件后relink的方式來更新Oracle binary,所以Oracle特別針對Windows發布區別於Unix上Normal/Molecular CPU的CPU Bundle patch
通常情況下,Bundle Patch會別較大,Windows bundle patches通常每一個季度都會發布
PSR(Patch Set Release)/Patch Set Update(PSU)
PSR就是大家常見的大補丁合集,通常1GB左右,也就是oracle版布號的第四位即為PSR號。也就是說oracle版布號的第四位會被修改
每一個PSR是都整合了之前的一些bug,並且經過了嚴格的測試,通常更新PSR風險相對較小
如10.2,10.2.0.1.0是基礎發行版,至今已有五個PSR發布,最新10.2的PSR為10.2.0.5.0
PSU就是在每個PSR發布之間的補丁,由於新舊PSR之間周期較長,而數據庫在運行期間難以保證不會出現新的bug,因此有了PSU
PSU是對於PSR的一個重要補充,每個PSU修改5位版本號的第5位。如,11.1版本升級為11.1.0.7.1;10.2版本為10.2.0.4.2
PSU與CPU一樣,定期發布,計划一年發布四次,發布日期與CPU發布日期相同。由於PSU包括同期發布的CPU,只要安裝PSU即可
PSU同樣使用Opatch工具安裝/刪除,命令仍是apply和rollback。一個PSU可視作一個個別補丁,安裝和刪除操作同樣簡便
2、opatch工具Oracle 為我們提供了用於patch安裝、回退、管理與追蹤的工具opatch,該工具為命令行工具,簡單易用,可以根據opatch的幫助命令來獲取幫助信息
#獲得opatch的幫助信息
[oracle@linux1 OPatch]$ ./opatch -help
Invoking OPatch 11.1.0.6.6#opatch的版本
Oracle Interim Patch Installer version 11.1.0.6.6
Copyright (c) 2009, Oracle Corporation. All rights reserved.
Usage: opatch [ -help ] [ -r[eport] ] [ command ]
command := apply #安裝patch
lsinventory #查看所有已安裝的patch
napply #用於Apply a set of patches at a time
nrollback #用於Rollback a set of patches at a time
rollback #Rollback an existing one-off patch indicated by the reference-id
query
version
prereq #用於檢查安裝patch之前的先決條件
util
:= -help Displays the help messageforthe command.
-report Print the actions without executing.
example: #可以通過下面的方式來查看每一個具體命令的用法
'opatch -help'
'opatch apply -help'
'opatch lsinventory -help'
'opatch napply -help'
'opatch nrollback -help'
'opatch rollback -help'
'opatch prereq -help'
'opatch util -help'
OPatch succeeded.
#下面查看oracle 10g下的補丁信息,對於如何安裝補丁,本文不作演示
oracle@M10DB01p:/users/oracle/OraHome10g/OPatch> ./opatch lsinventory
Invoking OPatch 10.2.0.3.0
.........
Oracle Home : /u