Why do I get error "Initialization function SQLAllocConnect not found" when using Oracle Heterogenous Services (HSODBC) on AIX?

Assumptions:

On AIX, this problem occurs because Oracle's ODBC agent (HSODBC) is linked against libodbc.so, but the unixODBC Driver Manager you're using contains libodbc.so.1 in the libodbc.a archive . To check this:

  1. cd /usr/local/easysoft/unixODBC/lib

    –Or–

    cd /lib

    –Or–

    cd unixODBC_install_dir
  2. ar -X32_64 -tv libodbc.a

If this shows the archive contains libodbc.so.1, this is your problem. The solution is:

  1. Become root or whoever you need to be to create files in the unixODBC lib subdirectory.
  2. cd /usr/local/easysoft/unixODBC/lib

    –Or–

    cd /lib

    –Or–

    cd unixODBC_install_dir
  3. ar -X32_64 -xv libodbc.a

    This should extract the file libodbc.so.1 to the current directory.

  4. Rename libodbc.so.1:
    mv libodbc.so.1 libodbc.so
  5. Point HSODBC at it directly by changing the HS_FDS_SHAREABLE_NAME parameter in your initname.ora file to be:
    HS_FDS_SHAREABLE_NAME = /usr/local/easysoft/unixODBC/lib/libodbc.so

Restart your Oracle listener. Your link should now work.