前言
对于DM与DM之间的DBLINK,三种方式中,使用DPI方式配置上最为方便,ODBC方式需要安装ODBC包并配置ODBC数据源,dmmal方式需要设置MAL_INI数据库参数、配置dmmal.ini文件并需要重启数据库服务。
dpi类型的dblink,达梦数据库软件安装完成后自带DPI库,无需进行其他配置操作即可在数据库中直接创建dblink。
注意:两库之间字符级编码不一致,无法搭建DBLINK。
使用限制
外部链接的使用有以下限制:
1.DM-DM 的同构外部链接不支持 MPP 环境,DM与异构数据库的外部链接支持 MPP环境;
2.增删改不支持 INTO 语句;
3.不支持使用游标进行增删改操作;
4.不支持操作远程表的复合类型列;
5.DBLINK 理论上不支持 LOB 类型列的操作,但支持简单的增删改语句中使用常量来对 LOB 类型列进行操作;
6.DBLINK 的本地库和远程库的大小写敏感参数 CASE_SENSITIVE 应保持一致,若不一致,应用需要保证 SQL 语句书写符合远程库的规范;
7.DBLINK 的本地库和远程库的字符集编码应一致,否则可能导致字符串操作出错!
8.DM-DM类型的 DBLINK 不支持远程函数调用。
另外,DM 连接异构数据库的外部链接还有如下使用限制:
1.数据类型以 DM 为基础,不支持 DM 没有的数据类型;
2.语法以 DM 的语法为标准,不支持 DM 不兼容的语法;
3.主键更新,如果是涉及到多个服务器的语句,不能保证更新操作一定成功;
4.使用CREATE VIEW view_name(view_col_name) AS SELECT ITEM FROM T@LINK 方式创建的查询远程对象的本地视图,对于异构库,不能保证操作一定成功。对于查询异构库远程对象的本地视图,最好采用 CREATE VIEW AS SELECT ITEM AS alias_name FROM T@LINK 方式创建。
创建语法
create [OR REPLACE] link "链接名" connect 'DPI' with "用户名" identified by "密码" using 'IP:端口';
-- [OR REPLACE] 输入时,若有同名link,则覆盖
环境信息
操作系统 | Centos 8 |
达梦版本 | DM8 x64 |
达梦版本 | DM8 x64 |
源端DM | 12.68.1.1 |
目的端DM | 12.68.1.2 |
创建dblink
create public link "dmlink" connect 'DPI' with "SYSDBA" identified by "SYSDBA" using '12.68.1.2:5236';
验证dblink的连通性
目的端查询
SELECT A.*,ROWID FROM A;
源端查询
SELECT A.*,ROWID FROM A@dmlink;
建表语句
CREATE TABLE A(A INT);
INSERT INTO A SELECT '1' FROM DUAL;
COMMIT;