I am trying to acces oracle from linux server. I am using unixODBC.
When i try to acces oracle using isql and i get error that driver manager can't open libsqora.so.12.1.
odbc.ini
[NAME] Application Attributes = T Attributes = W BatchAutocommitMode = IfAllSuccessful BindAsFLOAT = F CloseCursor = F DisableDPM = F DisableMTS = T Driver = Oracle 11g ODBC driver DSN = DSN_NAME EXECSchemaOpt = EXECSyntax = T Failover = T FailoverDelay = 10 FailoverRetryCount = 10 FetchBufferSize = 64000 ForceWCHAR = F Lobs = T Longs = T MaxLargeData = 0 MetadataIdDefault = F QueryTimeout = T ResultSets = T ServerName = ServerName SQLGetData extensions = F Translation DLL = Translation Option = 0 DisableRULEHint = T UserID = xxxx Password=<password> StatementCache=F CacheBufferSize=20 UseOCIDescribeAny=F
odbcinst.ini
[Oracle 11g ODBC driver] Description=Oracle ODBC driver for Oracle 11g Driver=/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so FileUsage=1
Then, when i use isql to acces oracle i get the following error:
[root@xxxxx lib]# isql -v NAME [01000][unixODBC][Driver Manager]Can't open lib '/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so' : file not found [ISQL]ERROR: Could not SQLConnect
I had typo in odbcinst.ini. I have corrected but still same error.
[root@xxxxx tmp]# isql -v NAME [01000][unixODBC][Driver Manager]Can't open lib '/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1' : file not found [ISQL]ERROR: Could not SQLConnect [root@xxxxx tmp]# ls -l /usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1 -rw-r--r-- 1 bin bin 996363 Sep 5 2010 /usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1 [Oracle 11g ODBC driver] Description=Oracle ODBC driver for Oracle 11g Driver=/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1 FileUsage=1
ENV
[root@xxxxx tmp]# env HOSTNAME=xxxxx SSH2_TTY=/dev/pts/0 SHELL=/bin/bash TERM=xterm HISTSIZE=1000 ODBC_DIR=/usr/local/easysoft/unixODBC OLDPWD=/usr/local/easysoft SSH_SESSION_ID=1424 SSH_TTY=/dev/pts/0 LD_LIBRARY_PATH=/usr/local/easysoft/lib:/usr/local/easysoft/unixODBC/lib A__z="*SHLVL TNS_ADMIN=/usr/local/easysoft/oracle/InstantClient112/network/ INPUTRC=/etc/inputrc PWD=/tmp LANG=en_US.UTF-8 ODBCSYSINI=/etc/ HOME=/root SHLVL=3 ODBCINI=/etc LESSOPEN=|/usr/bin/lesspipe.sh %s ORACLE_HOME=/usr/local/easysoft/oracle/InstantClient112/ G_BROKEN_FILENAMES=1 _=/bin/env PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/local/easysoft/unixODBC/bin:/opt/oraClient/11.2.0.4/bin
Fixed original issue with LD_LIBRARY_PATH updates but now it is broken again since I am trying to use the 32bit Oracle client.
Installed 32bit oracle client in directory /opt/oraClient/11.2.0.4_32/.
Modified the odbcinst.ini:
[Oracle 11g ODBC driver] Description=Oracle ODBC driver for Oracle 11g #Driver=/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1 Driver=/opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1 FileUsage=1
Error:
[root@xxxxx lib]# /usr/local/bin/isql -v NAME [01000][unixODBC] [Driver Manager]Can't open lib '/opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1' : file not found [ISQL]ERROR: Could not SQLConnect
If I need to use the 32bit Oracle client, what am i doing wrong...I know it is something in environmental variables.
[root@xxxxx lib]# file /opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1 /opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped
I enable trace but am not able to attach document here. I can email.
More debug info:
[root@xxxxx bin]# ldd /opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1 ldd: warning: you do not have execution permission for `/opt/oraClient/11.2.0.4_32/lib/libsqora.so.11.1' linux-gate.so.1 => (0xffffe000) libdl.so.2 => /lib/libdl.so.2 (0xf7f2b000) libm.so.6 => /lib/libm.so.6 (0xf7f02000) libpthread.so.0 => /lib/libpthread.so.0 (0xf7ee8000) libnsl.so.1 => /lib/libnsl.so.1 (0xf7ecf000) libclntsh.so.11.1 => not found libodbcinst.so.1 => not found libc.so.6 => /lib/libc.so.6 (0xf7d71000) /lib/ld-linux.so.2 (0x00134000)
I don't get one the "not found" which may be causing some problems:
[root@xxxxx bin]# ls /opt/oraClient/11.2.0.4_32/lib/libclntsh.so.11.1 /opt/oraClient/11.2.0.4_32/lib/libclntsh.so.11.1
Below is the most recent env output:
[root@xxxxx]# env HOSTNAME=xxxxx SSH2_TTY=/dev/pts/0 TERM=xterm SHELL=/bin/bash HISTSIZE=1000 ODBC_DIR=/usr/local/easysoft/unixODBC SSH_TTY=/dev/pts/0 LD_LIBRARY_PATH=/opt/oraClient/11.2.0.4_32/:/opt/oraClient/11.2.0.4_32/lib/:/usr/local/easysoft/oracle/InstantClient112:/usr/local/easysoft/oracle/InstantClient112/lib/ TNS_ADMIN=/opt/oraClient/11.2.0.4_32/network/ PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/local/easysoft/unixODBC/bin:/opt/oraClient/11.2.0.4_32/bin INPUTRC=/etc/inputrc LANG=en_US.UTF-8 ODBCSYSINI=/etc/ SHLVL=4 HOME=/root ODBCINI=/etc ORACLE_HOME=/opt/oraClient/11.2.0.4_32/ G_BROKEN_FILENAMES=1 _=/bin/env
This error is misleading:
The file that the error claimed was not present did exist.
I was able to chase down the actual missing file by executing:
# ldd /path/to/your/socalled/missing/file.so
This returned a series of files and one said:
libodbcinst.so.2 => not found
That is was the culprit for me. I then created the link that I needed and voila, the error went away.
ref: http://mailman.unixodbc.org/pipermail/unixodbc-support/2011-November/003018.html
Instant client doesn't have a lib
directory. If you've downloaded the instantclient-odbc-linux
package and unzipped that in the same location as the basic package then the libsqora.so.11.1
file will be durectly under /usr/local/easysoft/oracle/InstantClient112
.
So your .ini should point to:
Driver=/usr/local/easysoft/oracle/InstantClient112/libsqora.so.11.1
Note the extension though; you might want to soft-link that to libsqora.so
. If you've moved the .so
files into a subdirectory after unzipping (?) then you'd need:
Driver=/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so.11.1
It looks like you've reoriganised the instant client files after unzipping, creating a lib
directory. I'm not sure if that will directly cause you problems. But you also haven't set LD_LIBRARY_PATH
, as the installation instructions suggest:
Installation Steps:
Download the appropriate Instant Client packages for your platform. All installations REQUIRE the Basic package.
Unzip the packages into a single directory such as "instantclient".
Set the library loading path in your environment to the directory in Step 2 ("instantclient"). On many UNIX platforms, LD_LIBRARY_PATH is the appropriate environment variable. On Windows, PATH should be used.
Start your application and enjoy.
Clearly step (4) isn't working for you yet, but I think that's because you haven't done step (3); and I think as you've split the files - which might itself cause an issue - you may need to include both .../InstantClient112
and .../InstantClient112/lib
in the LD_LIBRARY_PATH
variable. And make sure the modified value is exported. I'm not sure why you'd want to rearrange the files though.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With