当前位置: 首页 > 工具软件 > ODBC Shell > 使用案例 >

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

微生德泽
2023-12-01

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

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

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

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

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

1 安装ODBC 库

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

1.1 使用YUM 安装

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

[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 手工编译安装

解压缩:

[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 等),则需要对实际库文件建立符号链接。

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

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 /]#

注意事项:

1) odbc.ini 中的 Driver 内容一定要与 odbcinst.ini 中的达梦驱动定义的节点名称相同。

2) odbc.ini 中的 SERVER 可以输入数据库服务器的 IP。https://www.cndba.cn/dave/article/3846

加载配置文件:

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

[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:https://www.cndba.cn/dave/article/3846

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

[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 的时候,可能会遇到如下错误:

[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.第二种原因:配置文件路径不对

查看odbc 环境,如下:

[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的错误。

对于这个问题,解决方法也是有两种:

1.直接在 /usr/local/etc/ 目录下配置odbcinst.ini 和 odbc.ini.

2.在其他目录配置,之后使用odbcinst 命令加载2个配置。

[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

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

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

[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]#

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

 类似资料: