签到成功

知道了

CNDBA社区CNDBA社区

Linux 平台 配置 ODBC 连接 DM 达梦数据库

2019-12-04 00:30 8122 0 原创 DM 达梦
作者: dave

DM 以 RDBMS 为核心,以 SQL 为标准,是一个能跨越多种软硬件平台、具有大型数据综合管理能力的、高效稳定的通用数据库管理系统。

DM 提供了多种数据库访问接口,包括 ODBC、JDBC、DPI、OLEDB 以及嵌入方式等。http://www.cndba.cn/cndba/dave/article/3846

下面看下Linux 平台如何配置ODBC 连接DM 达梦数据库。

Linux 上ODBC 有两种方式:手工安装、使用ODBCConfig工具。 我们这里看手工配置DM 的ODBC 连接。

1 安装ODBC 库

DMODBC 在 Linux 操作系统上的使用依赖于 UnixODBC 库,我们这里先安装unixODBC,有两种方法:

1.1 使用YUM 安装

Yum 源的配置,参考我的博客:

Linux 平台下 yum 源 配置 手册
https://www.cndba.cn/dave/article/154

[root@www.cndba.cn ~]# yum install unixODBC.x86_64 unixODBC-devel.x86_64 -y
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Resolving Dependencies
--> Running transaction check
---> Package unixODBC.x86_64 0:2.3.1-11.el7 will be installed
---> Package unixODBC-devel.x86_64 0:2.3.1-11.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================
 Package                              Arch                         Version                            Repository                  Size
=========================================================================
Installing:
 unixODBC                             x86_64                       2.3.1-11.el7                       dave                       413 k
 unixODBC-devel                       x86_64                       2.3.1-11.el7                       dave                        55 k

Transaction Summary
=========================================================================
Install  2 Packages

Total download size: 467 k
Installed size: 1.4 M
Downloading packages:
------------------------------------------------------------------------------------------------------------------------
Total                                                                                                  3.0 MB/s | 467 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : unixODBC-2.3.1-11.el7.x86_64                                                                                        1/2 
  Installing : unixODBC-devel-2.3.1-11.el7.x86_64                                                                                  2/2 
  Verifying  : unixODBC-devel-2.3.1-11.el7.x86_64                                                                                  1/2 
  Verifying  : unixODBC-2.3.1-11.el7.x86_64                                                                                        2/2 

Installed:
  unixODBC.x86_64 0:2.3.1-11.el7                                  unixODBC-devel.x86_64 0:2.3.1-11.el7                                 

Complete!
[root@www.cndba.cn ~]# 

[root@www.cndba.cn ~]# find / -name libodbcinst.so
/usr/lib64/libodbcinst.so
[root@www.cndba.cn ~]#

1.2 手工编译安装

下载unixODBC :

http://www.unixodbc.org/download.html

解压缩:

[root@www.cndba.cn dm]# ll unixODBC-2.3.0.tar.gz 
-rw-r--r--. 1 dmdba dmdba 1804749 Dec  3 04:14 unixODBC-2.3.0.tar.gz
[root@www.cndba.cn dm]# tar xzvf unixODBC-2.3.0.tar.gz

配置并安装:

[root@www.cndba.cn dm]# cd unixODBC-2.3.0/
[root@www.cndba.cn unixODBC-2.3.0]# ./configure
[root@www.cndba.cn unixODBC-2.3.0]# make && make install

[root@www.cndba.cn unixODBC-2.3.0]# find / -name libodbcinst.so
/usr/local/lib/libodbcinst.so
/dm/unixODBC-2.3.0/odbcinst/.libs/libodbcinst.so
[root@www.cndba.cn unixODBC-2.3.0]#

如果安装的 UnixODBC 生成的动态库名称不是libodbcinst.so(如 libodbcinst.so.1.0.0 或者 libodbcinst.so.2.0.0 等),则需要对实际库文件建立符号链接。

2 手动配置

查找驱动文件:

[root@www.cndba.cn ~]# find / -name libdodbc.so
/dm/dmdbms/bin/libdodbc.so
/dm/dmdbms/drivers/odbc/libdodbc.so
[root@www.cndba.cn ~]#

编辑/etc/odbcinst.ini,输入如下内容:

[root@www.cndba.cn /]# cat /etc/odbcinst.ini
[DM7 ODBC DRIVER]
Description = ODBC DRIVER FOR DM7
Driver = /dm/dmdbms/bin/libdodbc.so
[root@www.cndba.cn /]#

编辑/etc/odbc.ini,输入如下内容:

[root@www.cndba.cn /]# cat /etc/odbc.ini
[dm] 
Description = DM ODBC DSN
Driver = DM7 ODBC DRIVER
SERVER = localhost 
UID = SYSDBA 
PWD = SYSDBA 
TCP_PORT = 5236
[root@www.cndba.cn /]#

注意事项:

http://www.cndba.cn/cndba/dave/article/3846

1) odbc.ini 中的 Driver 内容一定要与 odbcinst.ini 中的达梦驱动定义的节点名称相同。
2) odbc.ini 中的 SERVER 可以输入数据库服务器的 IP。

加载配置文件:

[root@www.cndba.cn etc]# odbcinst -i -d -f /etc/odbc.ini
odbcinst: Driver installed. Usage count increased to 1. 
    Target directory is /usr/local/etc
[root@www.cndba.cn etc]# 
[root@www.cndba.cn etc]# odbcinst -i -s -l -f /etc/odbc.ini

验证ODBC:

[dmdba@www.cndba.cn ~]$ isql -v dm
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 
SQL> select count(1) from cndba;
+---------------------+
| COUNT(1)            |
+---------------------+
| 1                   |
+---------------------+
SQLRowCount returns 1
1 rows fetched
SQL>

连接成功。

3 关于[unixODBC] Data source name not found 错误的说明

在配置unixODBC 的时候,可能会遇到如下错误:

http://www.cndba.cn/cndba/dave/article/3846

[dmdba@www.cndba.cn ~]$ isql -v dm
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
[dmdba@www.cndba.cn ~]$

这里有两种原因:

1.第一种原因:Odbc.ini 配置文件本身有问题,比如名称有空格。
2.第二种原因:配置文件路径不对http://www.cndba.cn/cndba/dave/article/3846http://www.cndba.cn/cndba/dave/article/3846

查看odbc 环境,如下:http://www.cndba.cn/cndba/dave/article/3846

[dmdba@www.cndba.cn ~]$ odbcinst -j
unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /home/dmdba/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
[dmdba@www.cndba.cn ~]$

我们发现这里默认的路径是: /usr/local/etc/。 而我们之前配置的都是放在/etc 下。 所以看似正确,但是ODBC 是找不到我们的配置文件的。 所以会报Data source name not found, and no default driver specified的错误。 http://www.cndba.cn/cndba/dave/article/3846http://www.cndba.cn/cndba/dave/article/3846

对于这个问题,解决方法也是有两种:
1.直接在 /usr/local/etc/ 目录下配置odbcinst.ini 和 odbc.ini.
2.在其他目录配置,之后使用odbcinst 命令加载2个配置。

http://www.cndba.cn/cndba/dave/article/3846

[root@www.cndba.cn etc]# odbcinst -i -d -f /etc/odbc.ini
[root@www.cndba.cn etc]# odbcinst -i -s -l -f /etc/odbc.ini

加载完成后,这2个文件也会复制到 /usr/local/etc/ 目录下。

http://www.cndba.cn/cndba/dave/article/3846

[root@www.cndba.cn etc]# pwd
/usr/local/etc
[root@www.cndba.cn etc]# ll
total 8
drwxr-xr-x. 2 root root   6 Dec  3 10:05 ODBCDataSources
-rw-r--r--. 1 root root 111 Dec  3 10:48 odbc.ini
-rw-r--r--. 1 root root 222 Dec  3 10:39 odbcinst.ini
[root@www.cndba.cn etc]# cat odbc.ini 
[dm]
Description=DM ODBC DSN
Driver=DM7 ODBC DRIVER
SERVER=192.168.20.171
UID=SYSDBA
PWD=SYSDBA
TCP_PORT=5236

[root@www.cndba.cn etc]#

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2297
    原创
  • 3
    翻译
  • 630
    转载
  • 198
    评论
  • 访问:9288025次
  • 积分:4528
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ