No read or write permission to ORACLE_HOME/.patch_storage

tolywang發表於2011-08-02

ipadtest$ls  
8430622  gc_x86_64_10205_part1of2.zip  Linux_x86_64_Grid_Control_full_102030_disk1.zip  p8430622_10203_GENERIC.zip
Disk1    gc_x86_64_10205_part2of2.zip  Linux_x86_64_Grid_Control_full_102030_disk2.zip


ipadtest$cd 8430622/
ipadtest$
ipadtest$opa
opannotate  oparchive   opatch     
ipadtest$opatch apply
Invoking OPatch 10.2.0.4.2

Oracle Interim Patch Installer version 10.2.0.4.2
Copyright (c) 2007, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/product/oracle
Central Inventory : /u01/product/oraInventory_grid
   from           : /etc/oraInst.loc
OPatch version    : 10.2.0.4.2
OUI version       : 10.2.0.4.0
OUI location      : /u01/product/oracle/oui
Log file location : /u01/product/oracle/cfgtoollogs/opatch/opatch2011-08-02_16-45-34PM.log

ApplySession applying interim patch '8430622' to OH '/u01/product/oracle'
List of Homes on this system:

  Home name= oms10g, Location= "/u01/product/OracleHomes/oms10g"
  Home name= agent10g, Location= "/u01/product/OracleHomes/agent10g"
OPatchSession cannot load inventory for the given Oracle Home /u01/product/oracle. Possible causes are:
   No read or write permission to ORACLE_HOME/.patch_storage
   Central Inventory is locked by another OUI instance
   No read permission to Central Inventory

   The lock file exists in ORACLE_HOME/.patch_storage
   The Oracle Home does not exist in Central Inventory

ApplySession failed: ApplySession failed to prepare the system. OracleHomeInventory gets null oracleHomeInfo
System intact, OPatch will not attempt to restore the system

OPatch failed with error code 73
ipadtest$

 

 

檢視Oracle目錄許可權及ORACLE_HOME 設定 , 都正確。  執行  opatch   lsinventory  -detail  檢視: 

ipadtest$opatch lsinventory -detail
Invoking OPatch 10.2.0.4.2

Oracle Interim Patch Installer version 10.2.0.4.2
Copyright (c) 2007, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/product/oracle
Central Inventory : /u01/product/oraInventory_grid
   from           : /etc/oraInst.loc
OPatch version    : 10.2.0.4.2
OUI version       : 10.2.0.4.0
OUI location      : /u01/product/oracle/oui
Log file location : /u01/product/oracle/cfgtoollogs/opatch/opatch2011-08-02_17-04-29PM.log

List of Homes on this system:

  Home name= oms10g, Location= "/u01/product/OracleHomes/oms10g"
  Home name= agent10g, Location= "/u01/product/OracleHomes/agent10g"
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 gets null oracleHomeInfo

OPatch failed with error code 73
ipadtest$

 

 

 

此時,如果是windows系統, 我們需要安裝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.

   

 

 

 

其他資訊:  轉自  http://space.itpub.net/15415488/viewspace-626194   

    在以上兩個錯誤解決之後(或者你根本就沒遇到),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/35489/viewspace-703852/,如需轉載,請註明出處,否則將追究法律責任。

相關文章