1、通过源码安装安装ODBC
1.1上传unixODBC-2.3.12.tar.gz源码包到服务器并进行解压:
tar -zxvf unixODBC-2.3.12.tar.gz
1.2进行编译
[root@localhost unixODBC-2.3.12]# ./configure
[root@localhost unixODBC-2.3.12]# make&&make install
1.3配置ODBC
[root@localhost unixODBC-2.3.12]# odbcinst -j
unixODBC 2.3.12
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
[root@localhost unixODBC-2.3.12]# vi /usr/local/etc/odbcinst.ini
[Oracle in OraDb11g_home1]
Description = ODBC DRIVER FOR ORACLE
Driver = /oracle/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
Threading = 0
[root@localhost unixODBC-2.3.12]# vi /usr/local/etc/odbc.ini
[ORACLE]
Description = ORACLE ODBC DSN
Driver = Oracle in OraDb11g_home1
SERVER = 192.168.1.240
UID = system
PWD = oracle
Servername = orcl
PORT = 1521
1.4isql登录测试
[oracle@localhost ~]$ isql -v ORACLE system oracle
[01000][unixODBC][Driver Manager]Can't open lib '/oracle/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1' : file not found
[ISQL]ERROR: Could not SQLConnect
[root@localhost unixODBC-2.3.12]# ldd /oracle/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
linux-vdso.so.1 => (0x00007ffff7ffa000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ffff7bd7000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffff78d5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffff76b9000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007ffff749f000)
libclntsh.so.11.1 => not found
libodbcinst.so.1 => not found
libc.so.6 => /lib64/libc.so.6 (0x00007ffff70d1000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffff7ddb000)
[root@localhost unixODBC-2.3.12]#
ldd测试发现libsqora.so.11.1缺少依赖包,通过find命令查找依赖包
[root@localhost unixODBC-2.3.12]# find / -name libodbcinst.so.*
/usr/local/lib/libodbcinst.so.2.0.0
/usr/local/lib/libodbcinst.so.2
/home/oracle/unixODBC-2.3.12/odbcinst/.libs/libodbcinst.so.2.0.0
/home/oracle/unixODBC-2.3.12/odbcinst/.libs/libodbcinst.so.2
[root@localhost unixODBC-2.3.12]# cp /usr/local/lib/libodbcinst.so.2 /usr/lib64/libodbcinst.so.1
切换oracle用户ldd测试
[root@localhost unixODBC-2.3.12]# su - oracle
Last login: Tue Nov 28 10:52:42 CST 2023 on pts/0
[oracle@localhost ~]$ vi .bash_profile
[oracle@localhost ~]$ ldd /oracle/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
linux-vdso.so.1 => (0x00007ffff7ffa000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ffff7bd7000)
libm.so.6 => /lib64/libm.so.6 (0x00007ffff78d5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffff76b9000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007ffff749f000)
libclntsh.so.11.1 => /oracle/app/oracle/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1 (0x00007ffff4a35000)
libodbcinst.so.1 => /lib64/libodbcinst.so.1 (0x00007ffff481a000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffff444c000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffff7ddb000)
libnnz11.so => /oracle/app/oracle/product/11.2.0/dbhome_1/lib/libnnz11.so (0x00007ffff407f000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007ffff3e7d000)
[oracle@localhost ~]$ isql -v ORACLE system oracle
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| echo [string] |
| quit |
| |
+---------------------------------------+
SQL>
至此,ODBC链接oracle数据库配置成功。