Re: The Oracle ODBC driver story

From: Tim X <timx_at_nospam.dev.null>
Date: Mon, 14 Jun 2010 11:44:30 +1000
Message-ID: <878w6io0ap.fsf_at_rapttech.com.au>



Mladen Gogala <gogala.mladen_at_gmail.com> writes:

> On Fri, 11 Jun 2010 13:56:44 -0700, joel garry wrote:
>
>
>>> Yes, it works that way, but I have to compile and configure the machine
>>> manually and my boss is reluctant to allow me to do that on the
>>> production box.
>>
>> Fair enough. Any manual operations are subject to non-repeatability. I
>> often even script things I only intend to do once.
>
> That's the problem. Getting it to work is not the problem:
>
>
> [mgogala_at_medo ~]$ isql ora11 scott tiger
> +---------------------------------------+
> | Connected! |
> | |
> | sql-statement |
> | help [tablename] |
> | quit |
> | |
> +---------------------------------------+
> SQL> select * from dept;
> +-------+---------------+--------------+
> | DEPTNO| DNAME | LOC |
> +-------+---------------+--------------+
> | 10 | ACCOUNTING | NEW YORK |
> | 20 | RESEARCH | DALLAS |
> | 30 | SALES | CHICAGO |
> | 40 | OPERATIONS | BOSTON |
> +-------+---------------+--------------+
> SQLRowCount returns -1
> 4 rows fetched
> SQL>
> [mgogala_at_medo ~]$ isql --version
> unixODBC 2.3.0
> [mgogala_at_medo ~]$
>
>
> If you take a look at the version, you will see that unixODBC version is
> 2.3.0. Unfortunately, I had to link that myself, it wasn't in a
> repository package. I am not asking how to get it working, I did that a
> long time ago. The problem is the fact that Oracle is shipping the driver
> which doesn't work with the official OS packages. I can't ask my system
> administrator to install unixODBC-2.3.0-1-el5.386.rpm because there is no
> such thing in any repository. The version in the repository is 2.2.11:
>
> [mgogala_at_medo ~]$ rpm -qa|grep unixODBC
> unixODBC-devel-2.2.11-7.1
> unixODBC-2.2.11-7.1
> [mgogala_at_medo ~]$
>
> Oracle ODBC drivers shipped with the RDBMS, as well as the ones shipped
> with the instant client(s) do not work with the version 2.2.11. Linking
> things by myself means no maintenance, no automatic updates, no platform
> specific configuration manuals and a lot of dependency upon the DBA. This
> is what happens with unixODBC-2.2.11:
>
> [mgogala_at_medo tmp]$ isql ora11 scott tiger
> isql: symbol lookup error: /usr/lib/oracle/11.2/client/lib/
> libsqora.so.11.1: undefined symbol: SQLGetPrivateProfileStringW
> [mgogala_at_medo tmp]$ isql --version
> unixODBC 2.2.11
>
> This has been going on for more than a year. It is really, really, really
> annoying. Even funnier thing is that Oracle does the same thing with OEL.
> That doesn't work either. That, in particular, means that Oracle Corp. is
> shipping a non-functional product. I wonder what will happen with
> Solaris? If the QA remains the same as for Linux, the SUN might turn into
> a black hole, and soon.

Although not a great solution, something I've used in the past which addresses some of your concerns is to create your own rpm package. It has been a while since I've worked with RPMs, so I can't remember the exact details, but it goes something like

  1. Download the src rpm for the existing odbc ersion
  2. Unpack the rpm and replace the source tree with the new version.
  3. Update the version number in the spec file
  4. Re-build the rpm and test

If it works, you can then use this rpm to install the updated driver on all the systems where you need it.

The advantage of doing this is you get standard installs on all systems and because it is an rpm update, you will be alerted to updates/new versions that come form your vendor.

The downside is that your still going to be responsible for monitoring for security issues and updating your rpm and re-installing when any occur. However, I don't think there is any fix for this. Creating new rpms from existing ones is at least quite easy.

Tim

-- 
tcross (at) rapttech dot com dot au
Received on Sun Jun 13 2010 - 20:44:30 CDT

Original text of this message