oracle opatch 工具的使用(oracle小補丁安裝)(轉)

wdnmg發表於2011-03-15

從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.)

    opatch命令格式為:

    opatch < command > [< command_options >] [ -h[elp] ]

    命令有:apply(安裝個別補丁)、rollback(解除安裝個別補丁)、lsinventory(對inventory進行列表)

、query(顯示某一個別補丁的詳細資訊)、version(顯示opatch版本資訊)。在opatch目錄下,有使用者使

用指南檔案(Users_Guide.txt),其中有詳細的命令格式和使用示例,讀者可以參考。Opatch執行操作時,

除在螢幕輸出結果外,還生成日誌檔案。日誌檔案的路徑和檔名格式如下:

    $ORACLE_HOME/.patch_storage/< patch_id >/< action >-< patch_id >_< mm-dd-yyyy_hh-mi-ss

>.log

    其中“patch_id”是Oracle技術支援部門為個別補丁分配的編號。

     * 個別補丁安裝例項

    沿用安裝PSR例項中的環境。在安裝PSR10.1.0.5後,檢索metalink,發現若干在其之上的個別補丁。選

擇其中之一安裝。

    個別補丁Patch 4518443修復BUG4518443,這一BUG的主要問題是TNS LISTENER在註冊ONS(Oracle

Notification Services)的同時如果建立子程式,那麼LISTENER會掛起(HANGUP)。

    安裝時,首先,從metalink下載補丁的壓縮檔案p4518443_10105_LINUX.zip.將此檔案解壓縮至某一目錄

中。解壓縮後,這一補丁的所有檔案都在子目錄4518443下,目錄名就是個別補丁的補丁號,opatch依據目錄

名獲得資訊,所以一定不要重新命名子目錄。

    然後,在終端視窗中,執行cd命令移動到4518443子目錄中,執行以下命令:

    $ $ORACLE_HOME/OPatch/opatch apply

    對inventory列表,確認安裝操作:

    $ $ORACLE_HOME/OPatch/opatch lsinventory

    執行解除安裝命令時,也必須使4518443子目錄成為當前目錄。其中,Rollback命令需要兩個引數:-id給出

個別補丁號;-ph 給出個別補丁解壓縮後的路徑。

    $ $ORACLE_HOME/OPatch/opatch rollback -id 4518443 -ph /…/4518443

    隨後再對inventory列表,則會看到這一個別補丁已經被移去。

* 使用opatch顯示已安裝的版本資訊

    不需要啟動資料庫,執行加選項的對inventory的列表命令,可以得到已安裝的軟體的各個元件的詳細版

本資訊。

    $ $ORACLE_HOME/OPatch/opatch lsinventory -detail

    安全補丁CPU

    一個CPU內包含了對多個安全漏洞的修復,並且也包括相應必需的非安全漏洞的補丁。CPU是累積型的,

只要安裝最新發布的CPU即可,其中包括之前釋出的所有CPU的內容。事實上,在CPU之前的安全漏洞修改除去

個別例外也被包括在CPU中。Oracle公司只對處於標準技術支援和延長支援期間的產品提供CPU更新,對處於

維持支援範圍的產品不提供新的CPU.(對於9.2以前的版本,只對處於ECS和EMS期間的版本提供CPU更新。)

一般對當前補丁發行版及前一個版本提供CPU,但也有隻限於當前補丁發行版的例外情形。也就是說,一般需

要先安裝最新PSR後才可能安裝CPU.由於是累積型的定期釋出,所以對於某一平臺的某一版本,如果兩次CPU

釋出期間沒有發現新的安全漏洞,則新發布的CPU與前一版本完全相同。

    在以下網址中可以找到CPU釋出的資訊,但是很遺憾,只有技術支援簽約使用者才可以從metalink下載補丁

檔案。

   http://www.oracle.com/technology/deploy/security/alerts.htm

    Oracle公司制定的CPU的釋出日期大約在一月、四月、七月和十月的最接近15的星期二。

    對於每一個CPU,附有相應的說明文件(Critical Patch Update Note),其中介紹安裝過程和注意事項

,在安裝之前應認真閱讀此文件。同樣也存在文件“Oracle Critical Patch Update MM YYYY Known Issues

for Oracle Database”,其中列出了說明文件中沒有給出的新資訊。

    在安裝時,首先下載壓縮檔案p5225797_10105_LINUX.zip,解壓縮到與其它個別補丁相同的目錄下。檢

查其發行說明時,發現要求opatch版本比現已安裝版本要高,下載安裝指定版本opatch.進入子目錄5225797

(這是此安全補丁的補丁號),執行apply命令。

    $ $ORACLE_HOME/OPatch/opatch apply

    開啟此次安裝生成的日誌檔案,其中沒有錯誤資訊出現。執行inventory列表命令確認安裝:

    $ $ORACLE_HOME/opatch lsinventory

opatch作用
opatch是用於維護"個別"補丁的,有人稱其為interim path或是one-off patch。


以解決TA ENQ AND US ENQ DEADLOCK DURING TRANSACTION RECOVERY IN RAC問題的interim patch 3777178為例,
安裝及rollback的命令如下:
install:
oracle>unzip p3777178_9206_HP64.zip
oracle>cd 3777178
oracle>opatch apply


rollback:
oracle>cd 3777178
oracle>opatch rollback -id 3777178

檢視:
如下命令可以看到已經安裝了哪些interim patch
[oracle@mysql2 ~]$ /u01/app/oracle/product/10.2.0/db_2/OPatch/opatch lsinventory


不斷的在opatch後面加-h可以看到這個命令更加詳細的選項:
看一下lsinventory後面有哪些選項:
[oracle@mysql2 ~]$ /u01/app/oracle/product/10.2.0/db_2/OPatch/opatch lsinventory -h

 

1. 環境介紹

XXXX綜合管理資訊系統主機放在XXXX,資料庫平臺硬體架構如下:

資料庫主機:兩臺IBMp5 570(jcczxt1、jcczxt2)安裝AIX5L ML 5306 通過IBM HACMP構成雙機熱備。

資料庫平臺:Oracle Server - Enterprise Edition - Version: 9.2.0.8

2.故障描述

2008年12月10號上午9:00值班人員接到使用者反應應用出錯無法存檔。前臺出現的錯誤資訊如下:

ORA-01115:IO error reading block from file 6 (block #2707)

ORA-01110: data file 6 : ‘/oradata/smis1.dbf’

ORA-27091: skgfqio :unable to quere I/O

ORA-27072: skgfdisp : I/O error

IBM AIX RISC System/6000 Error : 5: I/O error

此時資料庫管理員重新啟動資料庫,前臺使用者反應應用可能正常執行,問題解決。資料庫管理員在檢查主機日誌時沒有發現任何硬體故障問題,在檢查資料庫日誌時也沒有任何錯誤提示,用Oracle的實用程式DBV對資料庫檔案進行檢查沒有發現壞塊。

2008年12月11日下午18:30使用者又報同樣的錯誤,此時DBA重新啟動資料庫和應用,問題解決。2008-12-11 8:50使用者又報同樣的。DBA重新啟動資料庫和應用,問題解決。

3.故障的定位

第一步,通過errpt檢查主機的日誌確認主機沒有硬體問題,磁碟沒有損壞。第二步,通過檢查資料庫的日誌檔案(alertSID.log)也沒有相關的錯誤提示,初步判定不是資料庫的問題。第三步,通過Oracle的實用程式DBV對資料庫檔案進行檢查沒有發現壞塊。此時可以確認不是硬體問題,是軟體的問題。第四步,綜合管理資訊系統是2008年10月18號上線,一直都穩定執行,沒有出現過類似的情況,可以排除是應用程式的問題。第五步,通過上metalink網站查詢與ORA-01115相關的資訊,發現有大量的資訊,其中的故障描述與我們的情況一致,“由於在AIX5L的作業系統上Oracle由於無法獲取正確的data block頭資訊,從而導致DBWn程式寫硬碟失敗,Oracle資料庫從8.1.7.4到10.2.0.2都有此問題,是由於Oracle的BUG導致,需要打一個Oracle的臨時補丁”。此時問題可以定位為oracle在AIX5L平臺上的BUG,需要載入一個Oracle的臨時補丁patch 5496862。

4.Oracle術語解釋

什麼叫interim patch ?

Interim patch是一次性的補丁針對特定的情況下觸發的Bug,沒有經過Oracle系統的認證,Oracle會根據Bug的嚴重性和需要在下一次的patch set中包含此Interim patch。Interim patch對環境和版本有特定的要求,即不同作業系統平臺和資料庫版本的會有不同的Interim patch。如Interim patch 5496862會。

什麼叫Opatch?

Opatch是oracle支援的Oracle臨時補丁的安裝實用程式。是針對Oracle資料庫第二版9.2.0後安裝臨時補丁。Opatch是一個基於Perl的程式。

如何安裝Opatch?

從metalink上選擇補丁程式,選擇簡單搜尋,輸入patch號6880880選擇相應的作業系統平臺,查詢結果會顯示所有可用版本的optach,下載版本號10.1就行。將下的壓縮檔案上傳到資料庫主機,將壓縮檔案複製到$ORACLE_HOME目錄下,用unzip工具解壓此壓縮檔案。具體命令如下:

#cp /tmp/p6880880_101000_AIX64-5L.zip $ORACLE_HOME

#chown oracle:dba $ORACLE_HOME/p6880880_101000_AIX64-5L.zip

以oracle使用者解壓此檔案

$ cd $ORACLE_HOME

$unzip p6880880_101000_AIX64-5L.zip

5.解決方法

1)從metalink上選擇補丁程式,選擇簡單搜尋,輸入patch號5496862,選擇平臺為IBM AIX Based System(64bit),下載Oracle9.2.0.8對應的patch大小為24K。

2)將patch 5496862上傳到資料庫主機(host2)

3)在jcczxt2主機上載入此patch

因綜合管理資訊系統採用雙機熱備方式,所以備機(host2)沒有資料庫應用。所以我們可以在不停下資料庫的情況下載入patch 5496862。詳細步驟如上:

以oracle資料庫使用者執行下面的命令:

$cp /tmp/p5496862_92080_AIX64-5L.zip /oracle/patch

$cd /oracle/patch

$unzip p5496862_92080_AIX64-5L.zip

$cd 5496862

$$ORACLE_HOME/Opatch/opatch install

提示要求輸入metalink的帳號和密碼,可能隨便輸入。

提示“ Please shut down Oracle instances running out of this ORACLE_HOME”輸入’Y’

此時oracle會開始安裝patch,因為要重新連結lib,所以要花幾分鐘時間,在安裝完畢後會出現“OPatch succeeded”提示。

4)將資料庫切換到jcczxt2

5)在host1主機上採用相同的方法上載入patch 5496862

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

相關文章