平台:AIX 6.1+RAC 10.2.0.5
安装完RAC后,升级至10.2.0.5。在CRS软件升级的最后一步运行root102.sh脚本时,有如下报错信息:
root@ballontt1:/#/oracle/product/10.2.0/crs_1/install/root102.sh
Copying opriproc to /etc/oracle/bin for AIX
WARNING: directory ‘/oracle/product/10.2.0‘is not owned by root
WARNING: directory ‘/oracle/product‘ is notowned by root
WARNING: directory ‘/oracle‘ is not ownedby root
Preparing to recopy patched init and RCscripts.
Recopying init and RC scripts.
ocrcheck failed. Check/oracle/product/10.2.0/crs_1/srvm/log for more details
此脚本在最后时会启动已关闭的CRS.脚本报错结束后,检查crs服务状态:
root@ballontt1:/# crsctl check crs
exec(): 0509-036 Cannot load program /oracle/product/10.2.0/db_1/bin/crsctl.bin because of the following errors:
0509-150 Dependent module /oracle/product/10.2.0/crs_1/lib32/libttsh10.a(shr_ttsh10.o) could not be loaded.
0509-103 The module has an invalid magic number.
根据脚本报错信息,应该是crsctl.bin程序因为无法加载某些库文件导致无法运行。我们分析问题过程如下:
1)使用ldd操作系统命令:ldd /oracle/product/10.2.0/db_1/bin/crsctl.bin命令可以跟踪crsctl.bin在运行过程中需要调用到哪些库文件(生产环境中没来得及做记录,所以这里无法贴出代码),我们在使用ldd命令时就会告诉有几个需要的文件无法找到而导致crsctl.bin命令执行失败,但是ldd命令并没有告诉这几个缺少的文件应该是在哪个目录下,所以你也无法进行确实是否这几个文件不存在。
2)因为系统和RAC都是64位,所以怀疑为什么要去lib32下找libttsh10.a。/oracle/product/10.2.0/crs_1目录下存在lib文件夹,应该是去lib文件夹下查找。所以,怀疑是因为/lib目录下缺少1)中提示的几个文件,才导致crsctl.bin去/lib32目录下查找。随后去/lib目录下查看是否存在1)中提示的几个文件,发现确实没有。而此时,RAC中的另一个节点是正常的,其/oracle/product/10.2.0/crs_1/lib目录下有1)中提示的几个文件,随后把缺少的文件从正常节点复制过来后,重新运行root102.sh脚本就可以正常启动CRS。
在解决问题的过程中,MOS上有类似的错误,其情况是在执行其命令时,因无法找到某个库文件报同样的错误。MOS给出的问题原因是因为环境变量中的CLASSSPATH/LIBPATH设置不合理:$ORACLE_HOME/lib,应在其它/lib、/usr/lib前面。随后查看自己的的环境变量确实存在问题,但是修改后同样报错。在后续的解决过程中才发现是在/lib下缺少文件。
至于文件缺少的原因怀疑可能与开始环境变量设置不合理有关。所以,在安装RAC前,环境变量一定确认无误,如果不确定可以从正常运行的其它RAC中拷贝一份做适当修改。
【error】RAC升级报错:0509-036,0509-150,0509-103
原文:http://blog.csdn.net/ballontt/article/details/19285549