运行srvctl 命令报错:
[oracle@rac1 u01]$ srvctl status nodeapps -n rac1
/u01/app/oracle/product/10.2.0/db_1/jdk/jre/bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
在安装CRS的时候,已经修改了vipca 和ORA_CRS_HOME下srvctl命令的中参数。 即unset LD_ASSUME_KERNEL参数。
但还是报了这个错误,后来用which srvctl命令才发现了问题的所在:
[oracle@rac1 ~]$ which srvctl
/u01/app/oracle/product/10.2.0/db_1/bin/srvctl
(1)使用unset
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
unset LD_ASSUME_KERNEL
(2)直接注释掉:
#LD_ASSUME_KERNEL=2.4.19
[oracle@rac1 u01]$ srvctl status nodeapps -n rac1
/u01/app/oracle/product/10.2.0/db_1/jdk/jre/bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
在安装CRS的时候,已经修改了vipca 和ORA_CRS_HOME下srvctl命令的中参数。 即unset LD_ASSUME_KERNEL参数。
但还是报了这个错误,后来用which srvctl命令才发现了问题的所在:
[oracle@rac1 ~]$ which srvctl
/u01/app/oracle/product/10.2.0/db_1/bin/srvctl
系统调用的是ORACLE_HOME下的srvctl。在安装完DB后并没有注释该文件中的LD_ASSUME_KERNEL参数。所以有两种解决办法 :
1:修改ORACLE_HOME下的srvctl,注释掉LD_ASSUME_KERNEL参数;
2:让系统调用ORA_CRS_HOME下的srvctl也就能避免错误了,即将ORA_CRS_HOME放在ORACLE_HOME的前面即可。
修改环境变量:[oracle@rac1 ~]$ vi ~/.bash_profile...export PATH=$PATH:$ORA_CRS_HOME/bin:$ORACLE_HOME/bin:/usr/bin:/bin...
重新开了一个窗口,验证系统调用的srvctl 的位置:
*该错误的原因是,Linux 内核的这些版本会采用 Oracle 以前的一个解决办法,即在vipca 和 srvctl 中使用 LD_ASSUME_KERNEL 设置来修补 Linux 线程中的一个原有缺陷。[oracle@rac2 ~]$ which srvctl/u01/app/oracle/product/crs/bin/srvctl
而这个解决办法在 OEL5、RHEL5 或 SLES10 上不再有效,故而产生错误,该错误在 10.2.0.4 补丁集中得以修复。
所以一般需注释以下文件中LD_ASSUME_KERNEL参数:
<ORA_CRS_HOME>/bin/vipca
<ORA_CRS_HOME>/bin/srvctl
<RDBMS_HOME>/bin/srvctl (If exists)
<ASM_HOME>/bin/srvctl # (If exists)
(1)使用unset
LD_ASSUME_KERNEL=2.4.19
export LD_ASSUME_KERNEL
unset LD_ASSUME_KERNEL
(2)直接注释掉:
#LD_ASSUME_KERNEL=2.4.19
#export LD_ASSUME_KERNEL