教你快速掌握如何使用“Opatch”打补丁
存放目錄在$ORACLE_HOME/OPatch
具體的使用格式
opatch < command > [< command_options >] [ -h[elp] ]
apply??? 安裝
rollback 卸載
lsinventory 列表
query??? 信息
version? 版本
使用的例子
1? 從oracle下載需要的補丁之后,任意的解壓到一個目錄中
2 進入解壓之后的這個以BUGID為文件夾的目錄
3 在這個文件夾中執行$ORACLE_HOME/OPatch? apply 安裝即可
在實際的工作和學習中,很多人都會發現有些Patch沒有setup安裝程序,本文中我們將詳細的介紹如何使用Oracle的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.)
??? 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
?
1、下載
Opatch的最新版本可以從Metalink下載,參考 Note:224346.1
2、準備工作
# You must have Perl 5.00503 (or later)
# installed under the ORACLE_HOME, or elsewhere within the host
# environment. OPatch is no longer included in patches as of 9.2.0.2.
# Refer to the following link for details on Perl and OPatch:
# http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=189489.1
下載Optach后,上傳到$ORACLE_HOME
[/app/oracle/product/9205/OPatch]$chmod 755 *
[/app/oracle/product/9205/OPatch]$ opatch version
Invoking OPatch 10.2.0.1.6
OPatch Version: 10.2.0.1.6
OPatch succeeded.
[/app/oracle/product/9205/OPatch]$ opatch lsinventory
Invoking OPatch 10.2.0.1.6
Oracle Interim Patch Installer version 10.2.0.1.6
Copyright (c) 2007, Oracle Corporation. All rights reserved.
Oracle Home : /app/oracle/product/9205
Central Inventory : /app/oracle/oraInventory
from : /var/opt/oracle/oraInst.loc
OPatch version : 10.2.0.1.6
OUI version : 10.1.0.5.0
OUI location : /app/oracle/product/9205/oui
Log file location : /app/oracle/product/9205/cfgtoollogs/opatch/opatch2008-02-20_15-27-23PM.log
LsInventorySession failed:
The Oracle Home does not meet OUI version requirement.
This OPatch (version 10.2.0.1.6) detects OUI version 10.1.0.5.0 in the home.
It requires OUI version 10.2 or above.
OPatch failed with error code 73
原因:Opatch的版本過高。
下載新的Opatch,重新執行opatch lsinventory
[/app/oracle/product/9205/OPatch]$ opatch lsinventory
Oracle Interim Patch Installer version 1.0.0.0.57
Copyright (c) 2007 Oracle Corporation. All Rights Reserved..
We recommend you refer to the OPatch documentation under
OPatch/docs for usage reference. We also recommend using
the latest OPatch version. For the latest OPatch version
and other support related issues, please refer to document
293369.1 which is viewable from metalink.oracle.com
Oracle Home : /app/oracle/product/9205
Oracle Home Inventory : /app/oracle/product/9205/inventory
Central Inventory : /app/oracle/oraInventory
from : /var/opt/oracle/oraInst.loc
OUI location : /app/oracle/product/9205/oui
OUI shared library : /app/oracle/product/9205/oui/lib/hpunix/liboraInstaller.sl
Java location : /app/oracle/product/9205/jre/1.4.2/bin/java
Log file location : /app/oracle/product/9205/.patch_storage//*.log
Creating log file "/app/oracle/product/9205/.patch_storage/LsInventory__02-20-2008_15-42-43.log"
Result:
There is no Interim Patch
OPatch succeeded.
3、具體范例及遇到的問題
下面以打補丁5523799為例
[/app/oracle/product/9205/patches/5523799]$opatch apply
報錯:
Invoking fuser to check for active processes.
Invoking fuser on "/app/oracle/product/9205/bin/oracle"
Problems when checking for files that are active.
There were problems when checking for active processes on critical files.
The patch tool runs the command "fuser" to check that critical files are not in use. Make sure 'fuser' is available and executable on your PATH
ERROR: OPatch failed during pre-reqs check.
原因為fuser沒有執行權限,su - root
/usr/sbin#chmod +x fuser
重新命令,打Patch成功
用opatch lsinventory顯示打patch結果
[/app/oracle/product/9205/OPatch]$ opatch lsinventory
Oracle Interim Patch Installer version 1.0.0.0.57
Copyright (c) 2007 Oracle Corporation. All Rights Reserved..
We recommend you refer to the OPatch documentation under
OPatch/docs for usage reference. We also recommend using
the latest OPatch version. For the latest OPatch version
and other support related issues, please refer to document
293369.1 which is viewable from metalink.oracle.com
Oracle Home : /app/oracle/product/9205
Oracle Home Inventory : /app/oracle/product/9205/inventory
Central Inventory : /app/oracle/oraInventory
from : /var/opt/oracle/oraInst.loc
OUI location : /app/oracle/product/9205/oui
OUI shared library : /app/oracle/product/9205/oui/lib/hpunix/liboraInstaller.sl
Java location : /app/oracle/product/9205/jre/1.4.2/bin/java
Log file location : /app/oracle/product/9205/.patch_storage//*.log
Creating log file "/app/oracle/product/9205/.patch_storage/LsInventory__02-20-2008_16-11-49.log"
Result:
Installed Patch List:
=====================
1) Patch 5523799 applied on Wed Feb 20 16:11:14 GMT+08:00 2008
[ Base Bug(s): 5523799 ]
OPatch succeeded.
4、最后通過opatch查看數據庫各組件版本
[/app/oracle/product/9205/OPatch]$ opatch lsinventory –details
?
[oracle@xushao OPatch]$ ./opatch version
Invoking OPatch 10.2.0.1.0
OPatch Version: 10.2.0.1.0
OPatch succeeded.
[oracle@xushao 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/app/oracle/product/10g
Central Inventory : /u01/app/oracle/oraInventory
?? from?????????? : /u01/app/oracle/product/10g/oraInst.loc
OPatch version??? : 10.2.0.1.0
OUI version?????? : 10.2.0.1.0
OUI location????? : /u01/app/oracle/product/10g/oui
Log file location : /u01/app/oracle/product/10g/cfgtoollogs/opatch/opatch-2011_Aug_28_00-12-13-CST_Sun.log
Lsinventory Output file location : /u01/app/oracle/product/10g/cfgtoollogs/opatch/lsinv/lsinventory-2011_Aug_28_00-12-13-CST_Sun.txt
--------------------------------------------------------------------------------
Installed Top-level Products (1):
Oracle Database 10g????????????????????????????????????????????????? 10.2.0.1.0
There are 1 products installed in this Oracle Home.
There are no Interim patches installed in this Oracle Home.
--------------------------------------------------------------------------------
?
總結
以上是生活随笔為你收集整理的教你快速掌握如何使用“Opatch”打补丁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动undo管理下如何添加和删除回滚段
- 下一篇: 关于NTP的配置