Saturday, October 12, 2013

ODBC Connection Error during Siebel Server/Database configuration - Linux/Unix

One of the main per-requisite before you can start a Siebel Server configuration or Siebel Database server configuration is to check the ODBC data source connectivity. Most typical Siebel installations will result in proper ODBC connectivity, but in case you are stuck with issues in the ODBC driver failing to connect, here are some tips to take you through the issue:



  • ORACLE_HOME should be set properly
  • LD_LIBRARY_PATH should have lib32 and it can be followed by lib in its value. ex: /oracle/product/11.1.0/lib32:/siebel/oracle/product /11.1.0/lib


1. ALWAYS use Oracle 32 Client installation on Siebel Servers as Siebel by itself is 32 bit.
2. Even after installing 32 bit Oracle client, ensure you have lib32 folder under the ORACLE_HOME directory.
 
Diagnostic Steps:

a) Set your siebenv.sh and open .odbc.ini from sys or siebel server, in our case we had issues with Siebel server configuration, we did not have siebenv.sh.
b) Even though you might be able to do tnsping or open SQLPLUS, run the odbcsql to see if it is able to connect, this is the actual issue.
Logging into "chsdevent_DSN" as "sadmin" ...
ODBC error 81 in SQLConnect:


c) open the .odbc.ini and check the DSN name which is used by you, (it will be with a format of siebel enterprise server name _DSN, ex: dev88ent_DSN) and in that section you will find an entry called Driver=/siebel/chspoc/gtwysrvr/lib/SEor823.so

d) run this command on your unix console

$ ldd /siebel/chspoc/gtwysrvr/lib/SEor823.so
$ ldd /siebel/chspoc/gtwysrvr/lib/SEor823.so
warning: ldd: /siebel/chspoc/gtwysrvr/lib/SEor823.so: is not executable
libSEicu23.so => (file not found)
libclntsh.so => /siebel/oracle/product/11.1.0/lib///libclntsh.so EMCLASS 64
libodbcinst.so => (file not found)
libdl.so.1 => /usr/lib///libdl.so.1
libCrun.so.1 => /usr/lib///libCrun.so.1
libnsl.so.1 => /usr/lib///libnsl.so.1
libnnz11.so => /siebel/oracle/product/11.1.0/lib32///libnnz11.so
libkstat.so.1 => /lib///libkstat.so.1
libsocket.so.1 => /lib///libsocket.so.1
libresolv.so.2 => /lib///libresolv.so.2
libgen.so.1 => /lib///libgen.so.1
libsched.so.1 => /usr/lib///libsched.so.1
librt.so.1 => /lib///librt.so.1
libaio.so.1 => /lib///libaio.so.1
libm.so.2 => /lib///libm.so.2
libc.so.1 => /lib///libc.so.1
libmp.so.2 => /lib///libmp.so.2
libmd.so.1 => /lib///libmd.so.1
libscf.so.1 => /lib///libscf.so.1
libdoor.so.1 => /lib///libdoor.so.1
libuutil.so.1 => /lib///libuutil.so.1
/platform/SUNW,T5140/lib/libc_psr.so.1
/platform/SUNW,T5140/lib/libmd_psr.so.1
e) you can see that it is looking for that file as it did not find under lib32 it went with lib folder but it is 64 bit.

3. Under lib32 folder it requires a particular so file with a particular name and if does not find it will search for that file name "libclntsh.so" under lib folder (which is 64 bit and will not help our cause)
4. Even if you have the file like libclntsh.so.11.1 its OK, but the name is not there you need to make a symbolic link to that file as this name "libclntsh.so"
5. ln -s libclntsh.so.1.1 libclntsh.so this will create a link (refer any document on how to create a symbolic link)
6. Now check odbcsql and it should work fine!
 

No comments:

Post a Comment