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]#
版权声明:本文为博主原创文章,未经博主允许不得转载。