installing Oracle Instantclient on Linux without setting environment variables?
Oracle's instantclient installation instructions specify that the user set LD_LIBRARY_PATH. This is very troublesome to manage for multiple users.
To use the instantclient without setting any environment variables:
Download the instantclient distribution from oracle.com. For doing non-java software development, you will need (assuming Oracle 10.2):
instantclient-basic-linux-x86_64-10.2.0.4.0.zipinstantclient-sdk-linux-x86_64-10.2.0.4.0.zipinstantclient-sqlplus-linux-x86_64-10.2.0.4.0.zip
Unzip the three files. This will give you a directory
instantclient_10_2/
Copy the files to /usr, which is one of the default places the dynamic loader searches.
sudo cp instantclient_10_2/sdk/include/*.h /usr/includesudo cp instantclient_10_2/sqlplus /usr/binsudo cp instantclient_10_2/*.so* /usr/lib
If you use tnsnames.ora, copy it to /etc, which is the default global place the oracle runtime searches.
sudo cp tnsnames.ora /etc
Test with
/usr/bin/sqlplus scott/tiger@myoracle
Add the library path to /etc/ld.so.conf
, then run /sbin/ldconfig
. You don't need to set LD_LIBRARY_PATH
for libraries installed in standard locations like /usr/lib
because these locations are already configured in /etc/ld.so.conf
.
You could of course rename sqlplus to sqlplus.real and make a wrapper script:
#!/bin/shif [ "$LD_LIBRARY_PATH" = "" ]then LD_LIBRARY_PATH=/what/everelse LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/what/everfiexport LD_LIBRARY_PATHexec sqlplus.real ${1+"$@"}