sqlplus: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory

  • echo $PATH gives me below result :

/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 fetches :

/usr/lib/oracle/12.1/client

  • echo LD_LIBRARY_PATH gives (set through /etc/bash.bashrc earlier, but now its showing as below)

LD_LIBRARY_PATH

doing vim for .bash_profile shows below things set :

[[ -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

Despite setting the ld_library_path in above file I'm still not getting the correct path in env despite running sudo ldconfig and then rebooting my machine!!

what help I'm looking for :

  • set env vars correctly

  • run sqlplus

Same question exists superuser, but no solution is given there.


As seen in the comments your Library is located at /usr/lib/oracle/12.1/client/lib/, but your path just includes /usr/lib/oracle/12.1/client/bin... you see why it can't find the library?

You can expand your LD_LIBRARY_PATH with the /usr/lib/oracle/12.1/client/lib/ directory (in your .profile or .environment or .bash_profile or (if you want it for all users) in the /etc/bash.bashrc file) - i don't know if sqlplus takes care of the LD_LIBRARY_PATH - just have a try.

To see to what LD_LIBRARY_PATH is set you have to type:

echo $LD_LIBRARY_PATH

(note the $ if you want to read the value!)

Hope this helps!


There are some files under the /usr/lib/oracle/12.1/client/lib/ directory which are not readable by other groups.

cd /usr/lib/oracle/12.1/client/lib/
chmod +r *

Then it works in my environment.