Not 100% sure on you situation but one thing I know is that with the
instant cleint some of the .so files have been smooched together into
one file called
ibclntsh.so.10.1 so what you might try is set a symbolic link to that
file like this
ln -s libclntsh.so ibclntsh.so.10.1
to get this when you la -a
libclntsh.so -> libclntsh.so.10.1
Just a thought
cheers john scoles
James H. McCullars wrote:
Hi, I have successfully installed the Oracle instant client, DBI-1.602
and DBD-Oracle 1.20 and can connect to a database on a remote host,
but only if I set LD_LIBRARY_PATH to the directory where the instant
client is installed. This is fine, but I need to do this from a CGI
script, and setting the environment there does not work. I know that
there is a way to do this in Apache using a SetEnv statement, but I
would prefer not to do that. The problem is, the library should be
found. The message that is being logged is this:
install_driver(Oracle) failed: Can't load
'/usr/local/lib/perl5/site_perl/5.8.7/sun4-solaris/auto/DBD/Oracle/Oracle.so'
for module DBD::Oracle: ld.so.1: perl: fatal: libnnz10.so: open
failed: No such file or directory at
/usr/local/lib/perl5/5.8.7/sun4-solaris/DynaLoader.pm line 230.
at (eval 3) line 3
Compilation failed in require at (eval 3) line 3.
Perhaps a required shared library or dll isn't installed where expected
If I set ORACLE_HOME and LD_LIBRARY_PATH before doing the perl
Makefile.PL and the make, then Oracle.so gets compiled like this:
LD_RUN_PATH="/usr/local/pkg/oracle-instant-client/instantclient_10_2"
gcc -G -L/usr/local/lib Oracle.o dbdimp.o oci8.o -o
blib/arch/auto/DBD/Oracle/Oracle.so
-L/usr/local/pkg/oracle-instantclient/instantclient_10_2 -lclntsh
I then unset LD_LIBRARY_PATH and do an ldd command on Oracle.so, and
it cannot find libnnz10.so:
bash-2.05$ ldd blib/arch/auto/DBD/Oracle/Oracle.so
libclntsh.so.10.1 =>
/usr/local/pkg/oracle-instant-client/instantclient_10_2/libclntsh.so.10.1
libc.so.1 => /usr/lib/libc.so.1
libnnz10.so => (file not found)
libkstat.so.1 => /usr/lib/libkstat.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libsocket.so.1 => /usr/lib/libsocket.so.1
libgen.so.1 => /usr/lib/libgen.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libsched.so.1 => /usr/lib/libsched.so.1
libaio.so.1 => /usr/lib/libaio.so.1
librt.so.1 => /usr/lib/librt.so.1
libm.so.1 => /usr/lib/libm.so.1
libmp.so.2 => /usr/lib/libmp.so.2
libmd5.so.1 => /usr/lib/libmd5.so.1
/usr/platform/SUNW,UltraAX-i2/lib/libc_psr.so.1
/usr/platform/SUNW,UltraAX-i2/lib/libmd5_psr.so.1
Even if I manually recompile Oracle.so adding a -R parameter with the
location of the Oracle libraries, it the ldd command will not locate
the library:
bash-2.05$ gcc -G -L/usr/local/lib Oracle.o dbdimp.o oci8.o -o
blib/arch/auto/DBD/Oracle/Oracle.so
-L/usr/local/pkg/oracle-instant-client/instantclient_10_2
-R/usr/local/pkg/oracle-instant-client/instantclient_10_2 -lclntsh
bash-2.05$ ldd blib/arch/auto/DBD/Oracle/Oracle.so libclntsh.so.10.1
=>
/usr/local/pkg/oracle-instant-client/instantclient_10_2/libclntsh.so.10.1
libc.so.1 => /usr/lib/libc.so.1
libnnz10.so => (file not found)
libkstat.so.1 => /usr/lib/libkstat.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libsocket.so.1 => /usr/lib/libsocket.so.1
libgen.so.1 => /usr/lib/libgen.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libsched.so.1 => /usr/lib/libsched.so.1
libaio.so.1 => /usr/lib/libaio.so.1
librt.so.1 => /usr/lib/librt.so.1
libm.so.1 => /usr/lib/libm.so.1
libmp.so.2 => /usr/lib/libmp.so.2
libmd5.so.1 => /usr/lib/libmd5.so.1
/usr/platform/SUNW,UltraAX-i2/lib/libc_psr.so.1
/usr/platform/SUNW,UltraAX-i2/lib/libmd5_psr.so.1
But the file is definitely there:
bash-2.05$ ls -la
/usr/local/pkg/oracle-instant-client/instantclient_10_2/libnnz10.so
-rwxr-xr-x 1 jim 100 6135928 Dec 20 2006
/usr/local/pkg/oracle-instant-client/instantclient_10_2/libnnz10.so
Does anyone have any idea why the library file is not being found at
runtime without LD_LIBRARY_PATH? It almost seems as if once the
oracle-install-client directory is searced once, it will not search it
again. I know there are possible workarounds (like symlinking all
those files to /usr/lib, or maybe setting the environment in Apache),
but I would prefer to get this working with as few system changes as
possible. This is Solaris 9 and gcc 3.1. Thanks...
Jim McCullars
University of Alabama in Huntsville