[unixODBC-support] Antw: Re: unixODBC SLES / OpenSuSE Oracle ODBC
Martin J. Evans
martin.evans at easysoft.com
Tue Oct 20 20:42:12 BST 2009
Keehan Mallon wrote:
> Are you using 32-bit or 64-bit? 32-bit should work, but as Nick states,
> skip the GUI.
agreed++ there is little to be gained from using the GUI assuming you
can get it to work (and the driver supports it) and that is very
difficult on some platforms. It is realtively trivial to edit the
odbc.ini and odbcinst.ini files and all you need is an editor.
> For 64-bit the situation is much more complex.
> I have not found a way to use 64-bit Oracle ODBC with Linux. From what
> I can put together, there is a bug in the Oracle 10.2 ODBC driver and it
> is "not supported" from the Oracle side which apparently means Oracle
> won't fix it. You can connect to the database, but all queries fail
There are multiple ways of building an ODBC driver for 64bit platforms
and these multiple ways came about because the MS specs for ODBC were
originally written before 64bit machines existed and did not anticipate
machines with larger pointer/long_int sizes. As a result, most ODBC
driver writers read these specs literally when they said a 32bit
quantity and then later MS changed "their version" (note it was passed
to xopen) to introduce SQLLEN and SQLULEN which are 32bit values on
32bit platforms and 64bit values on 64-bit platforms. All hell breaks
loose if you link an application or driver manager built one way with a
driver built another way. I imagine this might be what causes the
problem on 64bit platforms. It might be something else but the
SQLLEN/SQLULEN issue remains. You can see a small explanation at:
> The bug has been worked around by unixODBC, but in the 2.2.15 branch
> (again, from what I can tell) and this has not been released.
I'm not aware of that "bug" - would be interested to know what it was.
It really is not that difficult to build the latest unixODBC from cvs or
the latest pre-release and use the same configuration options that the
various distributions use. It is even possible to install it in a
different place so you can be sure not to disturb your distribution updates.
> should be able to get it from the repository, but I am trying to stick
> with SUSE rpms which there are none for 2.2.15. I can compile from
> source, but I like keeping as stock as possible for upgrade/etc purposes.
That, I am afraid, is the nature of open source projects and their
relationship with distributions which package open source projects -
they are always behind (and sometimes don't even feedback fixes upstream
- not that I'm saying SUSE don't). I maintain perl's DBD::ODBC module
and the distributions which package DBD::ODBC are nearly always 2 or 3
(even 4) versions behind and packages of unixODBC are still 2.2.12 on
some Linux distributions (e.g. the ubuntu hardy heron I am running). In
particular this causes me a big headache on 64bit platforms because
odbc_config is not included and this is the only way to find out how
unixODBC was built and prevents me from using the same compiler flags.
In addition, in the perl environment, often the various components of
the OS administration need Perl so changing it can be dangerous and
running your own perl (with your own PERL5LIB) for your own scripts is
not a bad idea.
> Version 11.x Oracle is even more strange. 32-bit is just fine, but the
> 64-bit instant client no longer has an ODBC supplement at all. I guess
> I could always spend the ~$1000 to buy the Easysoft driver, but I'm
> afraid I am going to have to go back to 32-bit to get Oracle supported
> ODBC. It is unfortunate because at this point, I have everything else
> running 64-bit (FreeTDS (SQL Server client), MySQL, Teradata, unixODBC,
> perl, perl-dbi, etc).
If Oracle produced and supported a working ODBC driver there would not
be a market for ISVs to produce an Oracle ODBC Driver - they don't and
so a market exists - it is not unreasonable for those ISVs to charge for
their work. It is rather complicated to produce an ODBC driver that
works on all 64bit unix systems and the SQLULEN/SQLLEN issue means you
need 2 drivers. Add to that the fact that people still get mixed up on
64bit platforms thinking that they always need a 64bit driver when in
fact it is dependent on how their application was built - that is the
determining factor. The situation on Windows is not that dissimilar in
that there are 2 odbc driver managers and 2 gui apps, one for 32bit
drivers and one for 64bit apps - just do a search for that and mysql
odbc and you'll realise what confusion that causes.
> Am I missing something?
I'm not sure as I'm reliant on what you posted wrt oracle's driver
needing a workaround in unixODBC and I have not had the opportunity to
speak to Nick yet.
BTW, I work for Easysoft (if you don't know) and some people might think
that taints my opinion.
> *From:* Nick Gorham <nick.gorham at easysoft.com>
> *To:* Support for the unixODBC project
> <unixodbc-support at mailman.unixodbc.org>
> *Sent:* Tue, October 20, 2009 8:55:53 AM
> *Subject:* Re: [unixODBC-support] Antw: Re: unixODBC SLES / OpenSuSE
> Oracle ODBC
> Till Brinkmann wrote:
>> what does it mean ?.
>> Is it impossible to use unixODBC with openSuSE and Oracle ?
> No, just that without a GUI setup lib you can't use the GUI part of
> unixODBC. Its just a matter of editing the odbc.ini and odbcinst,ini files.
> -- Nick
More information about the unixODBC-support