【前提条件】已安装好oracle数据库源,且Linux操作系统已安装且可正常启停。
检查是否安装unixODBC包,若已安装,查找odbc.ini与odbcinst.ini配置文件位置,备份后再修改配置文件内容,添加以下信息:
1)检查odbc包是否安装:切换到oracle用户执行odbcinst -j
[oracle@rac1 ~]$ odbcinst -j
unixODBC 2.2.14
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/oracle/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
由上述结果可知:驱动文件在/etc/odbcinst.ini ; DSN配置文件在/etc/odbc.ini ;配置个人的DSN在/home/oracle/.odbc.ini
2)配置驱动文件/etc/odbcinst.ini,添加内容如下:
[Oracle in Racdb11_home]
description = ODBC DRIVER FOR ORACLE
driver = /u01/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
threading = 0
3)配置数据源(DSN)文件/etc/odbc.ini,添加如下内容:
[ORACLE]
description = ORACLE ODBC DSN
driver = Oracle in Racdb11g_home #驱动名称
SERVER = 192.168.**.** #oracle的ip地址
UID = DMHS #oracle用户名dmhs
PWD = dmhs1234 #oracle用户密码dmhs1234
servername = racdb #oracle服务名
port = 1521 #oracle端口号
4)切换至oracle查看ODBC是否连接正常
[oracle@rac1 ~]$ isql -v ORACLE
[01000][unixODBC][Driver Manager]Can't open lib '/u01/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1' : file not found
[ISQL]ERROR: Could not SQLConnect
用户root也可查看
[root@rac1 ~]# isql oracle ds ds -v
[01000][unixODBC][Driver Manager]Can't open lib '/u01/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1' : file not found
[ISQL]ERROR: Could not SQLConnect
[root@rac1 ~]#
根据提示可知是由于libsqora.so.11.1依赖文件不存在,解决方法--配置库文件:
[root@rac1 ~]# ldd /u01/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
ldd: warning: you do not have execution permission for `/u01/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1'
linux-vdso.so.1 => (0x00007ffdc31bf000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f83c6d6c000)
libm.so.6 => /lib64/libm.so.6 (0x00007f83c6ae7000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f83c68ca000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f83c66b1000)
libclntsh.so.11.1 => not found
libodbcinst.so.1 => not found
libc.so.6 => /lib64/libc.so.6 (0x00007f83c631c000)
/lib64/ld-linux-x86-64.so.2 (0x000000306c200000)
[root@rac1 ~]#
由上述查找结果可知,查找的是libodbcinst.so.1,而系统的是libodbcinst.so.2,只需拷贝一下即可:
[root@rac1 lib64]# pwd
/usr/lib64
[root@rac1 lib64]# ls |grep libodbcinst*
Binary file libodbcinst.so.2 matches
Binary file libodbcinst.so.2.0.0 matches
[root@rac1 ~]# cp /usr/lib64/libodbcinst.so.2 /usr/lib64/libodbcinst.so.1
注意需要在root用户下添加LD_LIBRARY_PATH环境变量和ORACLE_HOME环境变量
[root@rac1 ~]# vi .bash_profile
[root@rac1 ~]# tail -n 3 .bash_profile
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib/:$LD_LIBRARY_PATH
[root@rac1 ~]# source .bash_profile #令上述环境变量生效
5)测试odbc连接,可根据实际需要选择是否切换到oracle用户,测试是否配置成功,如果返回以下信息,说明配置成功:
[root@rac1 ~]# isql oracle dmhs dmhs1234 -v
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> quit
[root@rac1 ~]#
学习社区: 达梦在线服务平台(https://eco.dameng.com)