安裝oraInventory和使用opatch給Oracle打補丁
opatch是給Oracle打補丁的工具,命令使用起來簡單方便。他預設地址在$ORACLE_HOME/OPatch/opatch,直接執行會顯示所有可用命令。
> $ORACLE_HOME/OPatch/opatch
Invoking OPatch 10.2.0.3.0
Oracle interim Patch Installer version 10.2.0.3.0
Copyright (c) 2005, Oracle Corporation. All rights reserved..
Usage: opatch [ -help ] [ -r[eport] ] [ command ]
command := apply
lsinventory
query
rollback
version
prereq
util
-report Print the actions without executing.
example:
'opatch -help'
'opatch apply -help'
'opatch lsinventory -help'
'opatch rollback -help'
'opatch prereq -help'
'opatch util -help'
OPatch succeeded.
但是對於初學者,有幾個錯誤很容易發生。
1.沒有oraInst.loc檔案
這其實是一個簡單的配置檔案,用來定義oraInventory的位置。他的預設地址是在/var/opt/oracle/oraInst.loc。
他的格式為:
> cat /var/opt/oracle/oraInst.loc
inventory_loc=/export/home/oracle/products/10203/oraInventory
inst_group=dba
如果沒有這個檔案,當我們檢視當前有哪些patch時會出報104錯:
> opatch lsinventory
Invoking OPatch 10.2.0.3.0
Oracle interim Patch Installer version 10.2.0.3.0
Copyright (c) 2005, Oracle Corporation. All rights reserved..
Oracle Home : /export/home/oracle/products/10203
Central Inventory : n/a
from :
OPatch version : 10.2.0.3.0
OUI version : 10.2.0.3.0
OUI location : /export/home/oracle/products/10203/oui
Log file location : n/a
OPatch cannot find a valid oraInst.loc file to locate Central Inventory.
OPatch failed with error code 104
當這個檔案不在預設的路徑時,我們可以加“-invPtrLoc ”來指明oraInst.loc的地址:
$ORACLE_HOME/OPatch/opatch lsinventory -invPtrLoc /var/opt/oracle/oraInst.loc.2
2.沒有正確/完整安裝oraInventory(Central Inventory)
此時,雖然/var/opt/oracle/oraInst.loc檔案存在,並且假設其指向的oraInventory沒有被正確或者完全安裝,那麼opatch lsinventory時會報如下錯:
> opatch lsinventory
Invoking OPatch 10.2.0.3.0
Oracle interim Patch Installer version 10.2.0.3.0
Copyright (c) 2005, Oracle Corporation. All rights reserved..
Oracle Home : /export/home/oracle/products/10203
Central Inventory : /export/home/oracle/products/10203/myinventory
from : /var/opt/oracle/oraInst.loc
OPatch version : 10.2.0.3.0
OUI version : 10.2.0.3.0
OUI location : /export/home/oracle/products/10203/oui
Log file location : /export/home/oracle/products/10203/cfgtoollogs/opatch/opatch2010-01-27_20-06-34PM.log
List of Homes on this system:
Inventory load failed... OPatch cannot load inventory for the given Oracle Home.
Possible causes are:
Oracle Home dir. path does not exist in Central Inventory
Oracle Home is a symbolic link
Oracle Home inventory is corrupted
LsInventorySession failed: OracleHomeInventory::load() gets null oracleHomeInfo
OPatch failed with error code 73
此時,我們需要安裝metalink Doc id 556834.1來重建oraInventory(Central Inventory)。
對於類unix系統,我們只需很簡單的執行如下命令重建即可(注意替換你自己的ORACLE_HOME和ORACLE_HOME_NAME):
> ./runInstaller -silent -ignoreSysPrereqs -attachHome ORACLE_HOME="/export/home/oracle/products/10203" ORACLE_HOME_NAME="home1"
Starting Oracle Universal Installer...
No pre-requisite checks found in oraparam.ini, no system pre-requisite checks will be executed.
>>> Ignoring required pre-requisite failures. Continuing...
The inventory pointer is located at /var/opt/oracle/oraInst.loc
The inventory is located at /export/home/oracle/products/10203/oraInventory
'AttachHome' was successful.
在以上兩個錯誤解決之後(或者你根本就沒遇到),opatch lsinventory 可以正確看到當前binary已經安裝了哪些patch。
其實還有一種辦法,前提是你從來只是安裝patch,沒有rollback過patch,那麼你可以 cd $ORACLE_HOME/.patch_storage ,然後ls -altr檢視所有的patch。
但是如果你rollback了一個patch,用這種辦法還是會看到這個patch,所以,最好的辦法還是透過opatch lsinventory來檢視。
下面以我在10203環境中打patch 7706062為例:
1.在metalink上下載patch p7706062_10203_SOLARIS64.zip
2.unzip p7706062_10203_SOLARIS64.zip
3.cd 7706062
4.$ORACLE_HOME/OPatch/opatch apply(注意,在停掉所有使用當前binary的資料庫之後再進行)
此時,我們遇到問題:
“
Patch(es) 5605370 conflict with the patch currently being installed (7706062).
If you continue, patch(es) 5605370 will be rolled back and the new patch (7706062) will be installed.
If a merge of the new patch (7706062) and the conflicting patch(es) (5605370) is required, contact Oracle Support Services and request a Merged patch.
”
因為兩個patch衝突,所以要麼2選1,要麼找oracle請求一個merged patch。(你自己選擇。。。)
這裡我強行安裝patch 7706062會導致patch 5605370 rollback.
5.如果你後悔了,也可以rollback這個patch:
$ORACLE_HOME/OPatch/opatch rollback -id 7706062
並且記得重新安裝前面被rollback的patch 5605370 。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15415488/viewspace-626194/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【UP_ORACLE】如何給Oracle DG打補丁(二)備庫安裝補丁步驟Oracle
- 【UP_ORACLE】如何給Oracle DG打補丁(三)主庫安裝補丁步驟Oracle
- Oracle的OPatch補丁更新Oracle
- ORACLE opatch 打補丁fuser command output for /u01/.../crsctl.bin is FailureOracleAI
- GI PSU打補丁之opatch auto 自動方式分別打GI_HOME和ORACLE_HOMEOracle
- ORACLE打補丁的方法和案例Oracle
- 如何給esxi打補丁
- 關於oracle opatch打補丁是 不能用grid使用者直接mvOPatch folder的問題Oracle
- oracle打補丁回顧Oracle
- 【UP_ORACLE】如何給Oracle DG打補丁(一)整體思路Oracle
- Oracle RAC 19.3打19.5.1 RU補丁Oracle
- windows oracle 11201打補丁報錯WindowsOracle
- 【PSU】怎麼給RAC打PSU補丁
- Oracle Goldengate 12c打pus補丁OracleGo
- Git 打補丁-- patch 和 diff 的使用(詳細)Git
- Git 打補丁– patch 和 diff 的使用(詳細)Git
- SharePoint or Office 打補丁或產品安裝遇到問題
- weblogic 12 補丁安裝Web
- 【ASK_ORACLE】Oracle 19c RAC使用opatchauto安裝補丁報錯OPATCHAUTO-72083Oracle
- [20201126]使用cursor_sharing_exact與給sql打補丁2.txtSQL
- [20201126]使用cursor_sharing_exact與給sql打補丁3.txtSQL
- RU 和 RUR oracle補丁說明Oracle
- Oracle 11g RAC自動打GI PSU補丁Oracle
- oracle 19c rac打補丁常見錯誤Oracle
- win10怎麼解除安裝補丁_解除安裝win10已安裝更新補丁的方法Win10
- Linux檔案打補丁Linux
- Webstorm 2024 安裝使用 (附加永久啟用碼、補丁)WebORM
- 【補丁】Oracle補丁的知識及術語Oracle
- Oracle 19c RAC打補丁過程避坑指南Oracle
- ORACLE RAC的全自動 打補丁標準化文件Oracle
- Oracle RAC更新補丁Oracle
- 12. Oracle版本、補丁及升級——12.2. 補丁及補丁集Oracle
- [20210929]sql打補丁使用rule提示問題.txtSQL
- weblogic的版本及打補丁Web
- DG環境下打補丁
- ORACLE windows和linux環境下 10g升級到11.2.0.4 並安裝11.2.0.4.19補丁OracleWindowsLinux
- oracle最新補丁查詢Oracle
- Oracle補丁介紹一Oracle
- windows10補丁安裝失敗如何處理_win10無法安裝補丁修復方法WindowsWin10