使用ODBC创建DBLINK实现DM数据库间的跨平台访问

您所在的位置:网站首页 服务器获取失败 使用ODBC创建DBLINK实现DM数据库间的跨平台访问

使用ODBC创建DBLINK实现DM数据库间的跨平台访问

2024-07-13 08:46| 来源: 网络整理| 查看: 265

在实际业务中有时需要数据库间的跨库跨平台访问,以从A库中访问B库的数据,此时可以使用ODBC方式创建访问目标数据库的外部链接DBLINK,以实现A库到B库的访问路径;本章介绍使用ODBC方式创建DBLINK来实现DM数据库间的跨平台访问。

一、下载并安装unixODBC

使用地址http://www.unixodbc.org/可下载unixODBC源码包,这里下载unixODBC-2.3.9版本。

下载完成后将包上传至源数据库服务器/opt目录,执行如下命令解压文件:

[root@localhost opt]# tar -zxvf unixODBC-2.3.9.tar.gz

linux下源码的安装由3个步骤组成:配置(configure)、编译(make)、安装(make install)。

执行./configure -h可查看配置帮助,从帮助中可以看出,如果不指定安装路径,默认安装目录为/usr/local,用户可执行文件存放至安装/bin目录,库文件存放至安装/lib目录,配置文件存放在安装/etc目录:

[root@localhost opt]# cd unixODBC-2.3.9/[root@localhost unixODBC-2.3.9]# ./configure -h`configure' configures unixODBC 2.3.9 to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in`/usr/local/bin', `/usr/local/lib' etc. You can specifyan installation prefix other than `/usr/local' using `--prefix',for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --localedir=DIR locale-dependent data [DATAROOTDIR/locale]

这里使用--sysconfdir参数指定配置文件路径为/etc目录,依次执行如下三个命令完成unixODBC的配置、编译和安装:​​​​​​​

[root@localhost unixODBC-2.3.9]# ./configure --sysconfdir=/etc[root@localhost unixODBC-2.3.9]# make[root@localhost unixODBC-2.3.9]# make install

安装完成后,使用odbcinst命令可查看配置文件信息。​​​​​​​

[root@localhost unixODBC-2.3.9]# odbcinst -junixODBC 2.3.9DRIVERS............: /etc/odbcinst.iniSYSTEM DATA SOURCES: /etc/odbc.iniFILE DATA SOURCES..: /etc/ODBCDataSourcesUSER DATA SOURCES..: /root/.odbc.iniSQLULEN Size.......: 8SQLLEN Size........: 8SQLSETPOSIROW Size.: 8

其中,odbcinst.ini用来配置驱动信息,odbc.ini用来配置系统数据源信息,.odbc.ini用来配置某个用户的数据源信息。

使用odbc_config命令可查看ODBC各文件信息:​​​​​​​

[root@localhost unixODBC-2.3.9]# odbc_config -hUsage: odbc_config [--prefix] [--exec-prefix] [--include-prefix] [--lib-prefix] [--bin-prefix] [--version] [--libs] [--odbcini] [--odbcinstini][root@localhost unixODBC-2.3.9]# odbc_config --prefix/usr/local[root@localhost unixODBC-2.3.9]# odbc_config --lib-prefix/usr/local/lib

二、配置ODBC 

在odbcinst.ini中增加DM驱动信息,内容参考如下(这里打开了ODBC的日志,并指定了日志文件路径,方便根据日志跟踪测试ODBC连接问题,生产环境可以不开启):​​​​​​​

[root@localhost etc]# cat odbcinst.ini#ODBC日志路径[ODBC]Trace=YESTraceFile=/dm8/log/odbc.log #DM ODBC驱动[DM8 ODBC DRIVER]Description = ODBC DRIVER FOR DM8Driver = /dm8/bin/libdodbc.so #DM ODBC库文件

在odbc.ini中增加DM数据源DSN信息(DM8WIN),Driver指定为上述odbcinst.ini中的DM ODBC驱动名称,指定目标数据库的IP、用户名、密码和端口等信息。​​​​​​​

[root@localhost etc]# cat odbc.ini[DM8WIN]Description = DM ODBC DSNDriver = DM8 ODBC DRIVERSERVER = 192.168.88.121UID = SYSDBAPWD = SYSDBATCP_PORT = 5238

配置完成后,使用dmdba用户(DM数据库安装用户)测试该数据源是否正常连接:​​​​​​​

[root@localhost etc]# su - dmdba[dmdba@localhost ~]$ isql dm8win -v+---------------------------------------+| Connected! || || sql-statement || help [tablename] || quit || |+---------------------------------------+SQL>

若出现如下错误,则是LD_LIBRARY_PATH缺少DM的环境变量信息:​​​​​​​

[dmdba@localhost ~]$ isql dm8win -v[01000][unixODBC][Driver Manager]Can't open lib '/dm8/bin/libdodbc.so' : file not found[ISQL]ERROR: Could not SQLConnect

修改dmdba用户.bash_profile配置文件,配置LD_LIBRARY_PATH增加DM安装bin目录(默认安装DM数据库后系统会自动设置):

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/DM_HOME/bin/

三、创建并测试DBLINK

创建DBLINK基本语法如下:​​​​​​​

CREATE [OR REPLACE] [PUBLIC] LINK CONNECT ['']WITH IDENTIFIED BY USING ''; ::= DAMENG | ORACLE | ODBC::=

使用ODBC方式连接时,指定为ODBC,为DM ODBC数据源名称(即odbc.ini中配置的DSN数据源名称”DM8WIN”)。参考如下命令创建DBLINK:

create link odbcdmlink connect ODBC' with "SYSDBA" identified by "SYSDBA" using 'DM8WIN';

也可以使用DM管理工具图形化界面创建DBLINK:

使用DBLINK可以访问目标数据库的表、视图、存储过程等对象,可以对表进行增删改查等DML操作,可以调用远程的存储过程,但不支持调用远程的函数。

四、常见问题

异常一 [-2256]:DBLINK远程服务器获取对象[XXX]失败.

这种情况一般是目标服务器的防火墙未关闭,可关闭目标服务器防火墙。

异常二 [-2251]:DBLINK远程服务器获取对象[T_TABLES]失败. 

此时可能是防火墙未关闭,或者是目标数据库不存在该表。

测试中相关异常,可根据ODBC日志来定位问题。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3