达梦数据库以 RDBMS 为核心,以 SQL 为标准,是一个能跨越多种软硬件平台、具有大型数据综合管理能力的、高效稳定的通用数据库管理系统。(本次实验环境以dm7为例)

DM7 提供了多种数据库访问接口,包括 ODBC、JDBC、DPI、OLEDB 以及嵌入方式等。

下面介绍Linux 平台如何配置ODBC 连接DM7 达梦数据库,这里主要讲手工配置DM7 的ODBC 连接。

1、环境说明

  • 系统环境:中标麒麟NeoKylin Advance V6.0 x86_64.iso

[root@dca dm7]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.0 (Santiago)

  • 数据库版本:达梦dm7_setup_rh6_64_ent_7.6.0.197_20190917.iso

SQL> select * from v$version;

行号 BANNER


1 DM Database Server x64 V7.6.0.197-Build(2019.09.12-112648)ENT
2 DB Version: 0x7000a

已用时间: 1.828(毫秒). 执行号:383.

  • 数据安装目录:/dm7
  • 数据实例名:PROD SQL> select name inst_name from v$instance;

行号 INST_NAME


1 PROD

已用时间: 0.251(毫秒). 执行号:388.

2、安装ODBC 要使用unixODBC2.3.0版本,比它低的版本可能不支持5.0以上linux。 首先查看机器上是否安装了odbc库 [root@dca dmdba]# rpm -qa|grep odbc 若没安装的话可以通过手工编译安装、rpm包安装、yum源安装的方式进行安装,本次主要介绍手工编译安装方式。 将自行下载的安装包 unixODBC-2.3.0.tar.gz放到/opt目录下,以下为安装过程:

解压缩: [root@dca dmdba]# cd /opt/ [root@dca opt]# tar -zxvf unixODBC-2.3.0.tar.gz

进行安装: [root@dca opt]# cd unixODBC-2.3.0

[root@dca unixODBC-2.3.0]# ./configure 这时候可能会报如下错误:

configure: error: no acceptable C compiler found in $PATH(缺少C编译器) 需要安装gcc环境 [root@dca unixODBC-2.3.0]# yum -y install gcc (联网环境下使用) 这时候可能又会报如下错误:

Loaded plugins: refresh-packagekit ftp://nsupdate:nsupdate@ftp.cs2c.com.cn/NS/6/os/gen/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'ftp.cs2c.com.cn'" Trying other mirror. Error: Cannot retrieve repository metadata (repomd.xml) for repository: nk6-os. Please verify its path and try again

中标麒麟6.0yum源地址不对,频繁报错 进入/etc/yum.repos.d目录 对baseurl进行更新,原操作系统中的地址已经失效,需要更新,新的yum源地址改为如下,将原先的地址注销或者删除。 http://download.cs2c.com.cn/neokylin/server/releases/6.0/x86_64/trusted/

[root@dca unixODBC-2.3.0]# cd /etc/yum.repos.d

编辑ns6.repo 文件 [root@dca yum.repos.d]# vim ns6.repo

[nk6-os] name=NeoKylin Linux Server 6 - Os

#baseurl=ftp://nsupdate:nsupdate@ftp.cs2c.com.cn/NS/6/os/gen/$basearch/ baseurl=http://download.cs2c.com.cn/neokylin/server/releases/6.0/x86_64/trusted/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release enabled=1

[nk6-updates] name=NeoKylin Linux Server 6 - Updates #baseurl=ftp://nsupdate:nsupdate@ftp.cs2c.com.cn/NS/6/updates/gen/$basearch/

baseurl=http://download.cs2c.com.cn/neokylin/server/releases/6.0/x86_64/trusted/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release enabled=1

[nk6-addons] name=NeoKylin Linux Server 6 - Addons #baseurl=ftp://nsupdate:nsupdate@ftp.cs2c.com.cn/NS/6/addons/gen/$basearch/

baseurl=http://download.cs2c.com.cn/neokylin/server/releases/6.0/x86_64/trusted/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-neokylin-release enabled=0

wq! 保存退出 然后再用 yum -y install gcc(安装过程省略)命令进行安装,即可成功安装gcc环境。

Installed: gcc.x86_64 0:4.4.7-11.el6.se.01
Complete!

成功安装完gcc环境后,再进入 cd unixODBC-2.3.0目录下继续进行unixODBC的安装(安装过程省略) [root@dca unixODBC-2.3.0]# ./configure [root@dca unixODBC-2.3.0]# make && make install

安装完成后,测试一下odbcinst –j查看安装信息 [root@dca unixODBC-2.3.0]# 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..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8

3、手动配置

成功安装完unixODBC之后,接下来对odbcinst.ini和odbc.ini进行配置

查看dm7数据的驱动文件 [root@dca unixODBC-2.3.0]# find / -name libdodbc.so /dm7/bin/libdodbc.so /dm7/drivers/odbc/libdodbc.so

编辑/usr/local/etc/odbc.ini,输入以下内容 [root@dca unixODBC-2.3.0]# vim /usr/local/etc/odbc.ini [dm] Description = DM ODBC DSN Driver = DM7 ODBC DRIVER SERVER = localhost UID = SYSDBA PWD = dameng123 TCP_PORT = 5236

编辑/usr/local/etc/odbcinst.ini,输入以下内容 [root@dca unixODBC-2.3.0]# vim /usr/local/etc/odbcinst.ini [DM7 ODBC DRIVER] Description = ODBC DRIVER FOR DM7 Driver = /dm7/bin/libdodbc.so

需要注意以下两点:

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

通过odbcinst -q -s查看DSN配置情况 [root@dca unixODBC-2.3.0]# odbcinst -q -s [dm]

4、验证odbc 配置完成之后,直接在终端运行:isql dm来测试,如果返回以下信息,测说明配置成功。

[root@dca unixODBC-2.3.0]# isql dm

+---------------------------------------+

| Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> 连接成功。

sql语句测试。

SQL> select 1;
+------------+ | 1 | +------------+ | 1 | +------------+ SQLRowCount returns 1 1 rows fetched SQL>