达梦数据库以 RDBMS 为核心, 以 SQL 为标准, 是一个能跨越多种软硬件平台, 具有大型数据综合管理能力的, 高效稳定的通用数据库管理系统.(本次实验环境以 dm7 为例)
DM7 提供了多种数据库访问接口, 包括 ODBC,JDBC,DPI,OLEDB 以及嵌入方式等.
下面介绍 Linux 平台如何配置 ODBC 连接 DM7 达梦数据库, 这里主要讲手工配置 DM7 的 ODBC 连接.
1, 环境说明
系统环境: 中标麒麟 NeoKylin Advance V6.0 x86_64.iso
- [[email protected] 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
- DM Database Server x64 V7.6.0.197-Build(2019.09.12-112648)ENT
- 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 库
[[email protected] dmdba]# rpm -qa|grep odbc
若没安装的话可以通过手工编译安装, rpm 包安装, yum 源安装的方式进行安装, 本次主要介绍手工编译安装方式.
将自行下载的安装包 unixODBC-2.3.0.tar.gz 放到 / opt 目录下, 以下为安装过程:
解压缩:
- [[email protected] dmdba]# cd /opt/
- [[email protected] opt]# tar -zxvf unixODBC-2.3.0.tar.gz
进行安装:
- [[email protected] opt]# cd unixODBC-2.3.0
- [[email protected] unixODBC-2.3.0]# ./configure
这时候可能会报如下错误:
configure: error: no acceptable C compiler found in $PATH(缺少 C 编译器)
需要安装 gcc 环境
[[email protected] 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 源地址改为如下, 将原先的地址注销或者删除.
[[email protected] unixODBC-2.3.0]# cd /etc/yum.repos.d
编辑 ns6.repo 文件
- [[email protected] yum.repos.d]# VIM ns6.repo
- [nk6-os]
- name=NeoKylin Linux Server 6 - Os
- #baseurl=ftp://nsupdate:[email protected]/NS/6/os/gen/$basearch/
- baseurl=
- 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=
- 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=
- 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 的安装 (安装过程省略)
- [[email protected] unixODBC-2.3.0]# ./configure
- [[email protected] unixODBC-2.3.0]# make && make install
安装完成后, 测试一下 odbcinst -j 查看安装信息
- [[email protected] 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 数据的驱动文件
- [[email protected] unixODBC-2.3.0]# find / -name libdodbc.so
- /dm7/bin/libdodbc.so
- /dm7/drivers/odbc/libdodbc.so
编辑 / usr/local/etc/odbc.INI, 输入以下内容
- [[email protected] 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, 输入以下内容
- [[email protected] 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 配置情况
- [[email protected] unixODBC-2.3.0]# odbcinst -q -s
- [dm]
4, 验证 odbc
配置完成之后, 直接在终端运行: isql dm 来测试, 如果返回以下信息, 测说明配置成功.
- [[email protected] 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>
来源: http://www.bubuko.com/infodetail-3424331.html