error while loading shared libraries: libclntsh.so.9.0 错误小记
一直玩Oracle 10g,今天在单位虚拟机上装了个9i玩玩,当时没有问题,但是用硬盘拷回家后,在自己的本本上运行,却出现了问题,错误提示信息如下:
[oracle@ora9iserv bin]$ sqlplus /nolog
sqlplus: error while loading shared libraries: libclntsh.so.9.0: cannot open shared object file: No such file or directory
环境变量如下:
[oracle@ora9iserv oracle]$ more .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_OWNER=oracle
export ORACLE_HOME=/u01/app/oracle/product/9.2.0/db_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export PATH=$PATH:$ORACLE_HOME/bin
CLASSPATH=$CLASSPATH:$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/
jlib
export CLASSPATH
stty erase ^H
执行命令:
[oracle@ora9iserv bin]$ sqlplus /nolog
sqlplus: error while loading shared libraries: libclntsh.so.9.0: cannot open shared object file: No such file or directory
我搞不懂,既然环境变量设置正确,为什么还会提示找不到libclntsh.so.9.0文件呢?
到$ORACLE_HOME/lib目录下查找,发现libclntsh.so.9.0文件存在,下面我用
ldd 命令查看sqlplus的依赖的共享库信息:
[oracle@ora9i ~]$ ldd /u01/app/oracle/product/9.2.0/db_1/bin/sqlplus
linux-gate.so.1 => (0x00cad000)
/lib/libcwait.so (0x003b8000)
libclntsh.so.9.0 => not found
libwtc9.so => /u01/app/oracle/product/9.2.0/db_1/lib/libwtc9.so (0x00ad9000)
libdl.so.2 => /lib/libdl.so.2 (0x001bd000)
libm.so.6 => /lib/libm.so.6 (0x007f2000)
libpthread.so.0 => /lib/libpthread.so.0 (0x0068e000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00b38000)
libc.so.6 => /lib/libc.so.6 (0x001c1000)
/lib/ld-linux.so.2 (0x00609000)
发现,确实提示找不到libclntsh.so.9.0相关文件,看来是环境变量的设置没有生效,问题一时陷入困境。
后来想想, 当时拷贝的时候快下班了,急着赶通勤车,拔数据线拔得比较急,可能是文件损坏了,重新拷贝一次,一切正常。
[oracle@ORA9ISERV orcl]$ ldd $ORACLE_HOME/bin/sqlplus
linux-gate.so.1 => (0xb7f73000)
/lib/libcwait.so (0xb7f6f000)
libclntsh.so.9.0 => /u01/app/oracle/product/9.2.0/db_1/lib/libclntsh.so.9.0 (0xb759a000)
libwtc9.so => /u01/app/oracle/product/9.2.0/db_1/lib/libwtc9.so (0xb7597000)
libdl.so.2 => /lib/libdl.so.2 (0xb7593000)
libm.so.6 => /lib/libm.so.6 (0xb756c000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7555000)
libnsl.so.1 => /lib/libnsl.so.1 (0xb753e000)
libc.so.6 => /lib/libc.so.6 (0xb73f8000)
/lib/ld-linux.so.2 (0x00bdc000)
推荐:oracle安装的时候将oracle用户的主目录建在/u01/oracle或者/opt/oracle等类似目录。