Oracle 補丁體系 及 opatch 工具 介紹
一. CPU(Critical Patch Update)
一個CPU內包含了對多個安全漏洞的修復,並且也包括相應必需的非安全漏洞的補丁。CPU是累積型的,只要安裝最新發布的CPU即可,其中包括之前釋出的所有CPU的內容。事實上,在CPU之前的安全漏洞修改除去個別例外也被包括在CPU中。Oracle公司只對處於標準技術支援和延長支援期間的產品提供CPU更新,對處於維持支援範圍的產品不提供新的CPU.(對於9.2以前的版本,只對處於ECS和EMS期間的版本提供CPU更新。)
一般對當前補丁發行版及前一個版本提供CPU,但也有隻限於當前補丁發行版的例外情形。也就是說,一般需要先安裝最新PSR後才可能安裝CPU.由於是累積型的定期釋出,所以對於某一平臺的某一版本,如果兩次CPU釋出期間沒有發現新的安全漏洞,則新發布的CPU與前一版本完全相同。
可以在以下網址中可以找到CPU釋出的資訊,只要在Oracle 免費註冊一個使用者,就可以收到這些補丁的資訊。但是,只有技術支援簽約使用者才可以從metalink下載補丁檔案。
http://www.oracle.com/technology/deploy/security/alerts.htm
Oracle公司制定的CPU的釋出日期大約在一月、四月、七月和十月的最接近15的星期二。
Critical Patch Updates
Critical Patch Updates are the primary means of releasing security fixes for Oracle products to customers with valid support contracts. They are released on the Tuesday closest to the 15th day of January, April, July and October. Starting 2011, the scheduled dates for the release of Critical Patch Updates will be on the Tuesday closest to the 17th day of January, April, July and October. The next four dates are:
12 October 2010
18 January 2011
19 April 2011
19 July 2011
對於每一個CPU,附有相應的說明文件(Critical Patch Update Note),其中介紹安裝過程和注意事項,在安裝之前應認真閱讀此文件。同樣也存在文件“Oracle Critical Patch Update MM YYYY Known Issues for Oracle Database”,其中列出了說明文件中沒有給出的新資訊。
二.PSR(Patch Set Release) 和 PSU(Patch Set Update)
8i,9i,10g,11g這是其主要版本號,每一版本會陸續有兩至三個發行版,如10.1,10.2,和 11.1,11.2分別是10g和11g的兩個發行版。對於每一個發行版軟體中發現的BUG,給出相應的修復補丁。每隔一定時期,會將所有補丁整合到軟體中,經過整合測試後,進行釋出,也稱為PSR(Patch Set Release)。以10.2為例,10.2.0.1.0是基礎發行版,至今已有三個PSR釋出,每個PSR修改5位版本號的第4位,最新10.2的PSR為10.2.0.4.0。(11.1.0.6.0是11.1的基礎發行版,11.1.0.7.0是第一次PSR) 。
在某個PSR之後編寫的補丁,在還沒有加入到下一個PSR之前,以個別補丁(Interim Patch)的形式提供給客戶。某個個別補丁是針對Oracle公司發現的或客戶報告的某一個BUG編寫的補丁,多個個別補丁之間一同安裝時可能會有衝突,即同一個目標模組分別進行了不同的修改。另外,即便在安裝時沒有發現衝突,由於沒有進行嚴格的整合測試,執行過程中由於相互作用是否會發生意外也不能完全排除。
除去修改功能和效能BUG的補丁,還有應對安全漏洞的安全補丁。Oracle公司定期(一年四期)釋出安全補丁集,稱之為CPU(Critical Patch Updates)。
由於資料庫在資訊系統的核心地位,對其效能和安全性的要求非常高。理應及時安裝所有重要補丁。另外一個方面,基於同樣的理由,要求資料庫系統必須非常穩定,安裝補丁而導致的系統故障和效能下降同樣不可接受。DBA經常面臨一個非常困難的選擇:對於多個修復重要BUG的個別補丁是否安裝。不安裝,失去預防故障發生的機會,以後故障發生時,自己是無作為;安裝,如果這些補丁中存在著倒退BUG,或者相互影響,以後發生由於安裝補丁而造成的故障時,自己則是無事生非!而等待下一個PSR,一般又需要一年時間。因此,出現了PSU(Patch Set Update)。
PSU解決以下幾個問題:
1. 減輕PSR週期長而帶來的不能及時更新的影響;
2. 解決多個個別補丁衝突和相互影響的問題;
3. 減輕DBA安裝補丁的負擔:補丁安裝次數,不定期檢查補丁釋出。
PSU具有如下特點:
第一、PSU是PSR的補充,在兩次PSR釋出之間釋出多個PSU,加快更新速度。每個PSU修改5位版本號的第5位。例如,安裝此次釋出的 PSU後,11.1版本“升級”為11.1.0.7.1;10.2版本為10.2.0.4.2。
第二、每個PSU中包含25至100個重要補丁,作為一個整體進行嚴格測試,解決衝突問題,保證系統的穩定性。PSU不僅包括對功能、效能修復的一般補丁,也包括安全補丁。
第三、PSU定期釋出,計劃一年分佈四次,釋出日期與CPU釋出日期相同。由於PSU包括同期釋出的CPU,只要安裝PSU即可。(對部分平臺,仍提供單獨的CPU,供客戶選擇)
第四、如同PSR和CPU一樣,PSU是累積型的,即只要安裝最新的PSU就自動包括以前所有PSU的內容。
第五、使用DBA已經熟悉的Opatch工具安裝/刪除PSU,命令仍是apply和rollback。一個PSU可視作一個個別補丁,安裝和刪除操作都很簡便。
第六、現有的個別補丁與PSU的關係分為三類:完全獨立;是PSU的一部分;與PSU衝突。第一類的個別補丁與PSU相互沒有影響,可以獨立的安裝或刪除。對於第二類,在安裝PSU之後,自然沒有必要安裝。若在PSU之前已安裝,則在安裝PSU時會被自動刪除。對於第三類個別補丁,如在PSU之前已安裝,必須在安裝PSU時刪除。客戶可以向Oracle公司技術支援部門提出申請,由Oracle負責提供與PSU不衝突的,在PSU之上安裝的相應的新的版本。
PSU的限制:必須是在正常技術支援範圍之內的版本(11.2、11.1和10.2),並且PSU只能在最新PSR之上安裝。
三. OPatch 命令
先看一個官網的Oracle OPatch 的說明:
Oracle Software Patching Using Opatch
從9.2版開始,Oracle公司實現了個別補丁安裝工具opatch. opatch使用一個稱為inventory的系統資料結構(嚴格說是與oui共享inventory),集中管理所有已安裝的個別補丁;個別補丁的安裝和解除安裝都使用opatch命令完成,衝突檢測也由opatch在安裝時自動完成;提供列表命令可以很方便得到已安裝個別補丁的資訊。
10g(10.1和10.2)版本中,opatch作為一個標準工具,在安裝時自動安裝。(安裝在$ORACLE_HOME/OPatch下。)而對於9.2版,需要從metalink下載opatch.無論是哪一個版本,系統中是否已經安裝opatch,在使用之前,應從metalink下載最新版本的opatch.很遺憾,由於系統實現的問題,10.2使用的opatch與之前版本(10.1和9.2)使用的opatch不相容,不能混用,這一點必須注意。
opatch是使用perl編寫的指令碼程式(其中也使用JAVA API)。使用的perl版本是5.6版,雖然在5.6之前的版本中也可執行,但應儘可能安裝5.6或以上的版本的perl. 對於DBA來說一個好訊息是,如果安裝9.2版軟體時保留了HTTP伺服器,則在$ORACLE_HOME/Apache下會自動安裝perl.(10g會自動安裝配置perl和opatch.)
3.1 opatch命令存放位置
該命令的存放位置在$ORACLE_HOME下的OPatch目錄下。
-bash-3.2$ pwd
/u01/oracle/oracle/product/10.2.0/db_1/OPatch
-bash-3.2$ ls
docs emdpatch.pl jlib opatch opatch.ini opatch.pl
-bash-3.2$ ls -lrt
total 44
-rw-r--r-- 1 oracle oinstall 18107 Apr 18 2005 emdpatch.pl
-rw-r--r-- 1 oracle oinstall 2193 Jun 1 2005 opatch.pl
-rwxr-xr-x 1 oracle oinstall 5672 Jun 1 2005 opatch
drwxr-x--- 2 oracle oinstall 4096 Apr 21 13:24 jlib
drwxr-x--- 2 oracle oinstall 4096 Apr 21 13:24 docs
-rw-r--r-- 1 oracle oinstall 49 Apr 21 13:24 opatch.ini
3.2 使用“-help”引數可以獲得opatch命令的幫助資訊
-bash-3.2$ ./opatch --help
Invoking OPatch 10.2.0.1.0
Oracle interim Patch Installer version 10.2.0.1.0
Copyright (c) 2005, Oracle Corporation. All rights reserved..
Oracle Home : /u01/oracle/oracle/product/10.2.0/db_1
Central Inventory : /u01/oracle/oraInventory
from : /u01/oracle/oracle/product/10.2.0/db_1/oraInst.loc
OPatch version : 10.2.0.1.0
OUI version : 10.2.0.1.0
OUI location : /u01/oracle/oracle/product/10.2.0/db_1//oui
Log file location : /u01/oracle/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch-2010_Aug_09_03-05-40-CST_Mon.log
Usage: opatch [ -help ] [ -r[eport] ] [ command ]
command := apply
lsinventory
query
rollback
version
-report Print the actions without executing (deprecated).
example:
'opatch -help'
'opatch apply -help'
'opatch lsinventory -help'
'opatch rollback -help'
OPatch succeeded.
這個是10.2.0.1版本的opatch. 在10.2.0.4 版本的opatch命令與之前的又不同,它有新增了幾個命令。
-bash-3.2$ ./opatch --help
Invoking OPatch 11.1.0.6.6
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
lsinventory
napply
nrollback
rollback
query
version
prereq
util
-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.
官網上對命令的一些解釋:
apply |
Installs an interim patch. Refer to "apply Command" for more information. |
napply |
Installs n number of patches (hence napply). Refer to "napply Command" for more information. |
auto |
Applies Oracle Clusterware patches. Refer to "auto Command" for more information. |
lsinventory |
Lists what is currently installed on the system. Refer to "lsinventory Command" for more information. |
query |
Queries a given patch for specific details. Refer to "query Command" for more information. |
rollback |
Removes an interim patch. Refer to "rollback Command" for more information. |
nrollback |
Removes n number of patches (hence nrollback). Refer to "nrollback Command" for more information. |
version |
Prints the current version of the patch tool. Refer to "version Command" for more information. |
在$ORACLE_HOME/OPatch/docs目錄下,用指南檔案(Users_Guide.txt),其中有詳細的命令格式和使用示例,可以參考。
Opatch執行操作時,除在螢幕輸出結果外,還生成日誌檔案。日誌檔案的路徑和檔名格式如下:
$ORACLE_HOME/.patch_storage/< patch_id >/< action >-< patch_id >_< mm-dd-yyyy_hh-mi-ss>.log
其中“patch_id”是Oracle技術支援部門為個別補丁分配的編號。
3.3 opatch安裝個別補丁示例:
以Patch 5689937 為例。
3.3.1 patch下載
從metalink下載補丁的壓縮檔案p5689937_10201_LINUX.zip.將此檔案解壓縮至某一目錄中。解壓縮後,這一補丁的所有檔案都在子目錄5689937下,目錄名就是個別補丁的補丁號,opatch依據目錄名獲得資訊,所以一定不要重新命名子目錄。
3.3.2 安裝patch
進入patch檔案5689937 目錄,在patch的目錄下面有一個readme的安裝文件,裡面有安裝步驟和一些問題的處理方法。
3.3.2.1 關閉資料庫和監聽
Shut down all instances and listeners associated with the Oracle home that you are updating.
3.3.2.2. 進入patch目錄,執行opatch apply命令
-bash-3.2$ cd p5689937_10201_LINUX/
-bash-3.2$ ls
5689937 patchmd.xml README.html
-bash-3.2$ cd 5689937/
-bash-3.2$ ls
custom etc files README.txt
-bash-3.2$ pwd
/mnt/p5689937_10201_LINUX/5689937
-bash-3.2$ export PATH=$PATH:/usr/ccs/bin
-bash-3.2$ $ORACLE_HOME/OPatch/opatch apply
3.3.2.3 啟動例項,執行相關指令碼
-bash-3.2$ cd $ORACLE_HOME/cpu/CPUJan2007/ -- 要進入這個目錄才能找到指令碼
-bash-3.2$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Aug 9 04:48:19 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 281018368 bytes
Fixed Size 1218968 bytes
Variable Size 83887720 bytes
Database Buffers 192937984 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> @catcpu.sql
如果catcpu.sql 指令碼報任何無效物件,執行如下指令碼:
SQL> @?/rdbms/admin/utlrp.sql
可以用如下SQL 檢查無效物件:
SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS= 'INVALID';
3.3.3 用inventory 命令檢視已經安裝的patch
-bash-3.2$ $ORACLE_HOME/OPatch/opatch lsinventory
Invoking OPatch 10.2.0.1.0
Oracle interim Patch Installer version 10.2.0.1.0
Copyright (c) 2005, Oracle Corporation. All rights reserved..
Oracle Home : /u01/oracle/oracle/product/10.2.0/db_1
Central Inventory : /u01/oracle/oraInventory
from : /u01/oracle/oracle/product/10.2.0/db_1/oraInst.loc
OPatch version : 10.2.0.1.0
OUI version : 10.2.0.1.0
OUI location : /u01/oracle/oracle/product/10.2.0/db_1//oui
Log file location : /u01/oracle/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/opatch-2010_Aug_09_04-55-55-CST_Mon.log
Lsinventory Output file location : /u01/oracle/oracle/product/10.2.0/db_1/cfgtoollogs/opatch/lsinv/lsinventory-2010_Aug_09_04-55-55-CST_Mon.txt
--------------------------------------------------------------------------------
Installed Top-level Products (1):
Oracle Database 10g 10.2.0.1.0
There are 1 products installed in this Oracle Home.
Interim patches (1) :
Patch 5689937 : applied on Mon Aug 09 04:43:27 CST 2010
Created on 8 Jan 2007, 11:48:31 hrs US/Eastern
Bugs fixed:
4671216, 4925103, 4604970, 4616376, 5689937, 4288876, 5225798, 5694720
4754888, 4750469, 4369235, 4751931, 4966716, 5049080, 5242648, 4348230
5490846, 4630549, 5490936, 5049088
--------------------------------------------------------------------------------
OPatch succeeded.
或者用$ORACLE_HOME/OPatch/opatch lsinventory –detail 命令檢視詳細。
3.4 解除安裝 opatch
3.4.1 關閉例項和監聽
SQL> shutdown immediate
3.4.2 執行opatch命令
-bash-3.2$ cd $ORACLE_HOME/OPatch/
-bash-3.2$ ./opatch rollback -id 5689937
3.4.3 啟動例項,執行catcpu_rollback.sql指令碼
-bash-3.2$ cd $ORACLE_HOME/cpu/CPUJan2007/
-bash-3.2$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Aug 9 05:04:19 2010
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 281018368 bytes
Fixed Size 1218968 bytes
Variable Size 109053544 bytes
Database Buffers 167772160 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> @catcpu_rollback.sql -- 這個指令碼在patch的安裝目錄裡也有
如果在執行中出現無效物件,執行如下指令碼:
SQL> @?/rdbms/admin/utlrp.sql
檢查無效物件:
SQL> SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS = 'INVALID';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-1069375/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle的OPatch補丁更新Oracle
- Oracle補丁介紹一Oracle
- 12. Oracle版本、補丁及升級——12.2. 補丁及補丁集Oracle
- 【補丁】Oracle補丁的知識及術語Oracle
- 12. Oracle版本、補丁及升級——12.1. 版本體系Oracle
- ORACLE opatch 打補丁fuser command output for /u01/.../crsctl.bin is FailureOracleAI
- 【AWR】Oracle awr相關檢視及體系介紹Oracle
- Oracle RAC更新補丁Oracle
- 關於oracle opatch打補丁是 不能用grid使用者直接mvOPatch folder的問題Oracle
- oracle打補丁回顧Oracle
- oracle最新補丁查詢Oracle
- GI PSU打補丁之opatch auto 自動方式分別打GI_HOME和ORACLE_HOMEOracle
- 【UP_ORACLE】如何給Oracle DG打補丁(一)整體思路Oracle
- 11_Oracle bbed工具介紹Oracle
- $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithOracleAI
- Spring Cloud Stream 體系及原理介紹SpringCloud
- 【Oracle體系結構】 Oracle19C 系統結構介紹Oracle
- 12. Oracle版本、補丁及升級——12.3. 升級Oracle
- 【UP_ORACLE】如何給Oracle DG打補丁(二)備庫安裝補丁步驟Oracle
- 【UP_ORACLE】如何給Oracle DG打補丁(三)主庫安裝補丁步驟Oracle
- Oracle RAC 19.3打19.5.1 RU補丁Oracle
- windows oracle 11201打補丁報錯WindowsOracle
- RU 和 RUR oracle補丁說明Oracle
- ORACLE打補丁的方法和案例Oracle
- JEB工具的介紹及使用
- weblogic的版本及打補丁Web
- 美創科技運維日記|關於Oracle補丁體系及其迭代階段運維Oracle
- Oracle認證介紹及入門心得Oracle
- Oracle Goldengate 12c打pus補丁OracleGo
- Oracle 12.2之後補丁RU RUR概要Oracle
- Oracle各版本補丁的支援週期Oracle
- pip軟體包管理工具介紹及基本使用
- Oracle 20C 多租戶_體系結構介紹Oracle
- 資料字典生成工具及文件工具作用介紹
- Oracle 19c- 19.8應用32242453補丁Oracle
- Oracle多租戶管理員指南-體系結構介紹01Oracle
- 【Oracle】Oracle logminer功能介紹Oracle
- Oracle ADR介紹Oracle
- ORACLE OWI介紹Oracle