对 grid 和 oracle 的 $ORACLE_HOME/.patch_storage 目录进行赋权,否则可能会报错:
ERROR: This patch is not applicable to GI home.
解决:
分别对 oracle 和 grid 用户的目录进行赋权:
chmod -R 777 $ORACLE_HOME/.patch_storage
ll -d $ORACLE_HOME/.patch_storage
[root@raclhr-11gR2-N2 OPatch]# ll -d $ORACLE_HOME/.patch_storage
drwxrwxrwx 2 grid oinstall 4096 Oct 30 15:54 /u01/app/11.2.0/grid/.patch_storage
[oracle@raclhr-11gR2-N2 ~]$ ll -d $ORACLE_HOME/.patch_storage
drwxrwxrwx 9 oracle oinstall 4096 Oct 30 16:06 /u01/app/oracle/product/11.2.0/dbhome_1/.patch_storage
今天升级Oracle Rac 一个11.2.0.4.0 到 11.2.0.4.1
系统为:HP-UX 11.31 IA64
首先的语句为:
./opatch auto /oracle/software/11.2.0.4.1 -oh /oracle/app/oracle/product/11.2.0/dbhome_1,/oracle/app/grid -ocmrf ocm.rsp
同时对ORACLE_HOME,GI_HOME同时升级
对ORACLE_HOME的升级,成功了。
但是对GI_HOME升级,却报了failed!
首先怀疑 补丁目录以及其所属文件的属主,属组 是否是 grid:oinstall ,检查结果却是一切正常
很奇怪,再次单独对GI_HOME进行升级
./opatch auto /oracle/software/11.2.0.4.1 -oh /oracle/app/grid -ocmrf ocm.rsp
之后报错ERROR: This patch is not applicable to GI home.
从字面理解,我瞬间傻了,我之前对RHEL系统操作的时候,是可以的呀,难道对HP-UX有什么特别设置么?
而且11gR2的PSU(不再分ORACLE_HOME的PSU,以及GI的PSU)只有一个,对GI和ORACLE目录都适用
检索metalink。发现了一篇文档 1580746.1
SYMPTOMS
Opatch failed with the following error:
The patch is not applicable for /opt/oracle/app/oracle/product/11.2.0/grid_2
patch /var/opt/data/patch/16619898 apply failed for home /opt/oracle/app/oracle/product/11.2.0/grid_2
The /opt/oracle/app/oracle/product/11.2.0/grid_2 is GI_HOME.
The same error can occur when a patch is getting applied to the RDBMS_HOME. The error message will point to the RDBMS_HOME in that case.
CAUSE
The opatch log shows
[Aug 30, 2013 11:21:37 AM] OPatch was not able to create .patch_storage directory
Unable to get Environent variables for Stand Alone home
[Aug 30, 2013 11:21:37 AM] Please delete .patch_storage directory ONLY IF NO PATCH IS APPLIED
This is because OPatch was not able to delete this directory which
was only created to run script for getting environment variables
No manual deletion may result in OPatch wrongly detecting irregular inventory for future invocation.
The same opatch log also shows the following error after above error:
[Aug 30, 2013 11:21:37 AM] /opt//oracle/app/oracle/product/11.2.0/grid_2/OPatch/jlib/etc/config path does not exist or is not a directory
[Aug 30, 2013 11:21:37 AM] OUI-67075:Failed to load the patch object. Possible causes are:
The specified path is not an interim Patch shiphome
Meta-data files are missing from the patch area
Patch location = /opt/oracle/app/oracle/product/11.2.0/grid_2/OPatch/jlib
Details = Input metadata files are missing.
[Aug 30, 2013 11:21:37 AM] Stack Description: java.lang.RuntimeException: Patch Location "/opt//oracle/app/oracle/product/11.2.0/grid_2/OPatch/jlib" doesn"t point to a valid patch area.
SOLUTION
Check GI_HOME/.patch_storage directory or ORACLE_HOME/.patch_storage directory.
1) if the patch is getting applied to RDBMS_HOME, make sure ORACLE_HOME/.patch_storage directory is readable, writable, and accessible by the user who is applying the patch
2) if the patch is getting applied to GRID_HOME, make sure GI_HOME/.patch_storage directory is owned by the owner of GI HOME
我查看两个目录的.patch_storage
发现权限都为drwx------ ,说明 除了属主以外,其他任何人都不能对这个目录进行操作。
而Opatch auto 却是使用root 账户来执行的,我抱着试试的想法
对目录的权限进行了修改(ORACLE_HOME,GI_HOME下的这个目录都修改了)
chmod -R 777 .patch_storage
之后再次执行./opatch auto /oracle/software/11.2.0.4.1 -oh /oracle/app/grid -ocmrf ocm.rsp
结果为:
Stopping CRS...
Stopped CRS successfullypatch /oracle/software/11.2.0.4.1/17478514
apply successful for home /oracle/app/grid
Starting CRS...
CRS-4123: Oracle High Availability Services has been started.opatch auto succeeded.
#