Amazon

2014年2月2日日曜日

Ubuntu13.10のunixodbcを使ってisqlからOracleに接続する

Ubuntu13.10のunixodbcを使ってisqlからOracleに接続しようとするとシェアードライブラリが見つからずにエラーとなります。
sqlplusで接続できるUbuntu環境のunixodbcをインストールします。

$ sqlplus scott/tiger@xe

SQL*Plus: Release 12.1.0.1.0 Production on Sun Feb 2 16:35:48 2014

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production

SQL> quit
Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
$ sudo apt-get install unixodbc
$
unixodbcの設定ファイルにOracle ODBCのライブラリとオラクルの接続先を設定してisqlで接続するとエラーになります。
$ cat /etc/odbcinst.ini 
[odbcOracle12g]
Description = Oracle 12g ODBC driver.
Driver = /usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1
$ cat /etc/odbc.ini 
[DSNOracle12g]
Driver = odbcOracle12g
ServerName = //192.168.0.10:1521/xe
$ isql -v DSNOracle12g scott tiger
[01000][unixODBC][Driver Manager]Can't open lib '/usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1' : file not found
[ISQL]ERROR: Could not SQLConnect
$ 
Oracle ODBCが参照するライブラリを調べるとlibodbcinst.so.2がないことが分かります。
$ ldd /usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1 | grep found
libodbcinst.so.2 => not found
$ 
libodbcinst.so.2が必要ですがUbuntu13.10のパッケージでは、libodbcinst.so.1しかサポートされていないようです。
$ apt-file search libodbcinst.so.2
$ apt-file search libodbcinst.so.1
odbcinst1debian2: /usr/lib/x86_64-linux-gnu/libodbcinst.so.1
odbcinst1debian2: /usr/lib/x86_64-linux-gnu/libodbcinst.so.1.0.0
$ dpkg -l | grep odbcinst1debian2
ii  odbcinst1debian2:amd64               2.2.14p2-5ubuntu4                   amd64        Support library for accessing odbc ini files
$ 
色々と調べてみると暫定の回避策が見つかりました。
http://forums.fedoraforum.org/archive/index.php/t-220777.html

libodbcinst.so.1のシンボリックリンクとしてlibodbcinst.so.2を作ります。
安易な解決策ですが、libodbcinst.so.2がサポートされるまでの暫定策として有効でした。
$ ln -s /usr/lib/x86_64-linux-gnu/libodbcinst.so.1 /lib64/libodbcinst.so.2 
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib64
$ echo $LD_LIBRARY_PATH 
/usr/lib/oracle/12.1/client64/lib:/lib64
$ isql -v DSNOracle12g scott tiger
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> quit
$

0 件のコメント: