暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【干货攻略】使用ODBC创建DBLINK实现DM数据库间的跨平台访问

达梦大学 2021-04-07
1233

使用ODBC创建DBLINK

实现DM数据库间的跨平台访问



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

本章内容已在如下环境上测试:

源数据库:中标麒麟7,DM8;

目标数据库:Windows 10, DM8;

相关关键字:ODBC、DB LINK、DM->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 specify
      an 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 -j
          unixODBC 2.3.9
          DRIVERS............: /etc/odbcinst.ini
          SYSTEM DATA SOURCES: etc/odbc.ini
          FILE DATA SOURCES..: etc/ODBCDataSources
          USER DATA SOURCES..: root/.odbc.ini
          SQLULEN Size.......: 8
          SQLLEN Size........: 8
          SQLSETPOSIROW Size.: 8

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

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

            [root@localhost unixODBC-2.3.9]# odbc_config -h
            Usage: 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=YES
              TraceFile=/dm8/log/odbc.log




              #DM ODBC驱动
              [DM8 ODBC DRIVER]
              Description = ODBC DRIVER FOR DM8
              Driver = 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 DSN
                Driver = DM8 ODBC DRIVER
                SERVER = 192.168.88.121
                UID = SYSDBA
                PWD = SYSDBA
                TCP_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数据源DSN>

                        使用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日志来定位问题。



                          好,以上是本次分享内容,希望能给大家带来帮助。使用ODBC方式也可以创建DM到Oracle的数据库链接,感兴趣的同学可以尝试一下~





                          往期回顾


                          内容丨程青

                          编辑丨大大

                          文章转载自达梦大学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                          评论