linux平台配置odbc连接dm7达梦数据库

达梦数据库以 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:[email protected]/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 - Osbr/>#baseurl=ftp://nsupdate:[email protected]/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:[email protected]/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:[email protected]/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> select 1;
+------------+
| 1 |
+------------+
| 1 |
+------------+
SQLRowCount returns 1
1 rows fetched
SQL>
连接成功。

猜你喜欢

转载自blog.51cto.com/1534815/2471381