安装ODBC驱动

1.1 ODBC驱动包 For Linux

1.1.1 odbc介绍

ODBC为异构数据库访问提供统一接口,允许应用程序以SQL为数据存取标准,存取不同DBMS管理的数据;使应用程序直接操纵DB中的数据,免除随DB的改变而改变。


1.2.1 安装odbc驱动程序

官网下载地址:
http://ftp.unixodbc.org/
在这里插入图片描述

### 1. 安装前检查环境gcc/make编译器
[root@dca01 tmp]# rpm -qa | egrep 'gcc|make'
cmake-2.8.12.2-2.el7.x86_64
texlive-makeindex-svn26689.2.12-45.el7.noarch
gcc-gfortran-4.8.5-44.el7.x86_64
gcc-4.8.5-44.el7.x86_64
texlive-makeindex-bin-svn26509.0-45.20130427_r30134.el7.x86_64
automake-1.13.4-3.el7.noarch
libgcc-4.8.5-44.el7.x86_64
gcc-c++-4.8.5-44.el7.x86_64
make-3.82-24.el7.x86_64

# 如果没有以上工具,可以搭建yum源快速安装
[root@dca01 tmp]# yum -y install gcc make


### 2. 上传安装包到服务器,解压它
[root@dca01 ~]# cd /tmp
[root@dca01 tmp]# ls -l
总用量 1864
-rw-r--r--. 1 root root 1676145 2月  22 20:08 unixODBC-2.3.9.tar.gz
drwx------. 2 root root       6 2月  22 09:36 vmware-root_95685-1064613575
[root@dca01 tmp]# file unixODBC-2.3.9.tar.gz
unixODBC-2.3.9.tar.gz: gzip compressed data, from Unix, last modified: Sun Sep  6 17:43:46 2020, max compression
[root@dca01 tmp]# tar -xf unixODBC-2.3.9.tar.gz
[root@dca01 tmp]# ls
ssh-ibs3Y48eK0ld  unixODBC-2.3.9  unixODBC-2.3.9.tar.gz  vmware-root_95685-1064613575

### 3. 编译源码包并安装它
[root@dca01 tmp]# cd unixODBC-2.3.9/
# 建议:查看安装手册说明,即安装的先决条件
# less INSTALL 
# 要求:Before trying to compile unixODBC make sure you have installed the
#following software packages:
#    o gnu make version 3.7 or newer or a native C compiler

# 经第一步已经检查make版本>3.7,满足要求。
# --prefix 参数表示将程序解压安装到/usr/local/unixODBC。
# --sysconfdir 参数表示配置文件存储位置。
[root@dca01 unixODBC-2.3.9]# ./configure --prefix=/usr/local/unixODBC --sysconfdir=/etc
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gawk... (cached) gawk
.... ....
checking for strlcat... no
checking for strlcpy... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
checking are we setting library version ... no
# 确定软件环境准备完全无误后,进行编译安装
[root@dca01 unixODBC-2.3.9]# echo $?
0
[root@dca01 unixODBC-2.3.9]# make && make install
make  all-recursive
make[1]: 进入目录“/tmp/unixODBC-2.3.9”
Making all in extras
make[2]: 进入目录“/tmp/unixODBC-2.3.9/extras”
/bin/sh ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..  -I../include   -g -O2 -pthread -MT strcasecmp.lo -MD -MP -MF .deps/strcasecmp.Tpo -c -o strcasecmp.lo strcasecmp.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -pthread -MT strcasecmp.lo -MD -MP -MF .deps/strcasecmp.Tpo -c strcasecmp.c  -fPIC -DPIC -o .libs/strcasecmp.o
mv -f .deps/strcasecmp.Tpo .deps/strcasecmp.Plo
/bin/sh ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..  -I../include   -g -O2 -pthread -MT snprintf.lo -MD -MP -MF .deps/snprintf.Tpo -c -o snprintf.lo snprintf.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -g -O2 -pthread -MT snprintf.lo -MD -MP -MF .deps/snprintf.Tpo -c snprintf.c  -fPIC -DPIC -o .libs/snprintf.o
mv -f .deps/snprintf.Tpo .deps/snprintf.Plo
..... ....
make[2]: 离开目录“/tmp/unixODBC-2.3.9”
make[1]: 离开目录“/tmp/unixODBC-2.3.9”


### 4. 确认安装成功,查看版本
[root@dca01 unixODBC-2.3.9]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini   # 链接文件路径 
SYSTEM DATA SOURCES: /etc/odbc.ini       # 数据源配置
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

#odbc_config  --odbcini
[root@dca01 unixODBC-2.3.9]# odbcinst --version
unixODBC 2.3.1
[root@dca01 unixODBC-2.3.9]# which odbcinst
/usr/bin/odbcinst

1.2.2 配置odbc连接达梦数据库

### 1. 第一项:指定准确的达梦数据库的odbc驱动链接文件
# 查看帮助文档,参照配置文件格式
[root@dca01 unixODBC-2.3.9]# man 5 /etc/odbcinst.ini
#  [PostgreSQL]
#    Description = PostgreSQL driver for GNU/Linux
#    Driver      = /usr/lib/psqlodbcw.so
#    Setup       = /usr/lib/libodbcpsqlS.so

# 指定驱动位置
[root@dca01 unixODBC-2.3.9]# vim /etc/odbcinst.ini
[DM8 ODBC Driver]
Description = ODBC driver for DM8
Driver      = /dm8/dmdba/dmdbms/bin/libdodbc.so

#数据源:加载驱动、主机、用户、密码
[root@dca01 unixODBC-2.3.9]# vim /etc/odbc.ini
[dm8]
Description=DM ODBC DSN
Driver=DM8 ODBC Driver   # 一定要与section名称相同
SERVER=192.168.0.120
UID=SYSDBA
PWD=SYSDBA
TCP_PORT=5236


# 测试连接
[root@dca01 bin]# su - dmdba
上一次登录:一 2月 22 20:51:40 CST 2021pts/1 上
[dmdba@dca01 ~]$ isql dm8 -v
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

1.3.1 配置odbc注意事项

  1. 配置文件odbcinst.ini和odbc.ini中每一行的开头不允许有空格,要不然会有如下报错 “[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified [ISQL]ERROR: Could not SQLConnect”。
  2. 达梦odbc依赖于unixODBC库,倘若unixODBC没安装在系统目录下,请设置系统环境变量LD_LIBRARY_PATH指向动态链接库。PS:unixODBC安装后没有以libodbcinst.so名称存在,可以对它(libodbcinst.so.2.0.0)建立符号链接文件。
  3. 以root用户登录连接时,产生错误:"[01000][unixODBC][Driver Manager]Can’t open lib ‘/dm8/dmdba/dmdbms/bin/libdodbc.so’ : file not found [ISQL]ERROR: Could not SQLConnect" ,真实原因是当前用户未找到该文件,应配置环境变量LD_LIBRARY_PATH或以dmdba登录。
    export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/dmdba/dmdbms/bin/"

猜你喜欢

转载自blog.csdn.net/ai20110304/article/details/113961568
今日推荐