sqlplus: 加载共享库 libsqlplus.so 时出错:无法打开共享对象文件:没有那个文件或目录

  • echo $PATH 给我以下结果:

/home/mayank/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-7-oracle/bin:/usr/lib/jvm/java-7-oracle/db/bin:/usr/lib/jvm/java-7-oracle/jre/bin:/usr/lib/oracle/12.1/client/bin

  • echo $ORACLE_HOME 获取:

/usr/lib/oracle/12.1/client

  • echo LD_LIBRARY_PATH给出的结果(之前通过/etc/bash.bashrc设置,但现在显示如下)

LD_LIBRARY_PATH

.bash_profile执行vim显示以下设置:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" #
Load RVM into a shell session *as a function*

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    export LD_LIBRARY_PATH

PATH=$PATH:/usr/local/bin
    export PATH

尽管在上述文件中设置了ld_library_path,但在运行sudo ldconfig并重新启动机器后,我仍然没有得到正确的路径在env中!! 我需要什么帮助:
  • 正确设置环境变量

  • 运行sqlplus

相同问题请参考superuser,但那里没有给出解决方案。

请问"libsqlplus.so"文件在哪里?试着用 "sudo updatedb && locate libsqlplus.so" 去找一下它 - 然后请告诉我们你是否找到了! - Wolfgang
@WolfgangVogl:嗨...谢谢你的回复,执行你的命令后我得到了这个结果:/usr/lib/oracle/12.1/client/lib/libsqlplus.so - user246631
@WolfgangVogl:这是.so文件的权限检查结果 => ls -l /usr/lib/oracle/12.1/client/lib/libsqlplus.so -rw-r--r-- 1 root root 1303050 May 27 2013 /usr/lib/oracle/12.1/client/lib/libsqlplus.so - user246631
1点击这个链接查看详细的步骤和截图。 - Aniket Thakur
2个回答

根据评论中所见,您的库位于/usr/lib/oracle/12.1/client/lib/,但是您的路径只包括/usr/lib/oracle/12.1/client/bin... 您明白为什么它找不到库了吗?
您可以在LD_LIBRARY_PATH中添加/usr/lib/oracle/12.1/client/lib/目录(在您的.profile或.environment或.bash_profile文件中,或者(如果要应用于所有用户)在/etc/bash.bashrc文件中)- 我不知道sqlplus是否会处理LD_LIBRARY_PATH - 可以试试看。
要查看LD_LIBRARY_PATH设置为何值,您需要输入以下命令:
echo $LD_LIBRARY_PATH

(如果您想查看值,请注意$!)

希望这有帮助!


嗨,非常感谢你抽出时间来帮忙。我将$LD_LIBRARY_PATH更新为/usr/lib/oracle/12.1/client/lib/,然后运行了sqlplus,但是还是出现相同的错误!:( - user246631
1还有一个 lib libaio1 也缺失了...在你的解决方案之后,我不得不使用 sudo 升级...现在问题解决了...耶耶耶!! :D - user246631

/usr/lib/oracle/12.1/client/lib/目录下有一些文件,其他组无法读取。
cd /usr/lib/oracle/12.1/client/lib/
chmod +r *

然后它在我的环境中运行。