1.概述
达梦数据库版本:V8.1.2.192 企业版 单实例
DBLINK的创建模式:DPI方式
当前现状:DBLINK创建成功,但是select查询的时候报错:MAL系统没有配置或者服务器不是企业版
2.报错现象
DBLINK的创建语句:create link LINK_DPI_1 connect 'DAMENG' with "SYSDBA" identified by "SYSDBA" using '127.0.0.1:15237';
DBLINK查询报错如下:
3.问题分析
3.1 DBLINK的语法格式
语法格式
CopyCREATE [OR REPLACE] [PUBLIC] LINK [IF NOT EXISTS] <外部链接名> CONNECT ['<连接库类型>'] WITH <登录名> IDENTIFIED BY <登录口令> USING '<外部连接串>' [<OPTION子句>];
<连接库类型> ::=
DAMENG |
ORACLE |
ODBC |
DPI
<外部链接串>::=
<DAMENG外部链接串>|
<ORACLE外部链接串> |
<ODBC外部链接串> |
<DPI外部链接串>
<DAMENG外部链接串>::=[<连接类型>;]<服务器列表>
<连接类型>::=
PRIMARY FIRST |
STANDBY FIRST |
PRIMARY ONLY |
STANDBY ONLY
<服务器列表>::=
<服务器地址> |
<服务器地址>{,<服务器地址>}
<服务器地址>::=
<实例IP地址>/<实例端口号> |
<MAL IP地址>/<MAL端口号> |
<实例名>
<ORACLE外部链接串>::=
<tsn_name> |
<description>|
<IP地址>/<服务名>
<description>::=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=<IP地址>)(PORT=<端口号>)))(CONNECT_DATA=(SERVICE_NAME=<服务名>)))
<ODBC外部链接串>::= <ODBC数据源DSN>
<DPI外部链接串>::= <IP地址>:<端口号> | <服务名>
<OPTION子句>:: =(<option项>{, <option项>})
<option项>:: =
LOCAL_CODE=<选项值> |
CONVERT_MODE=<选项值> |
BYTES_IN_CHAR=<选项值> |
DB_TYPE=<选项值> |
DATA_CHARSET=<选项值>
CASE_OPT=<选项值>
参数
-
PUBLIC 此链接对象是否能够被创建者之外的用户引用;
-
< 外部链接名 > 数据库链接的名称;
-
< 连接库类型 > 目前只支持 DAMENG、ORACLE、ODBC 或 DPI,默认为 DAMENG;
-
< 登录名 > 登录用户名称;
-
< 登录口令 > 登录用户口令;
-
< 连接类型 > 当 DBLINK 连接到多机环境时,可以设定 < 连接类型 > 和指定多台 < 服务器地址 >。< 连接类型 > 用来指定 DBLINK 将采用何种优先级别连接到 < 服务器列表 > 中的机器,共四种连接类型:PRIMARY FIRST 为主机优先连接;STANDBY FIRST 为备机优先连接;PRIMARY ONLY 为只连主机;STANDBY ONLY 为只连备机。缺省为 PRIMARY FIRST。< 连接类型 > 为可选项,一旦指定了 < 连接类型 >,则必须指定 < 服务器地址 > 数大于等于 2;
-
<DAMENG 外部链接串 > 支持三种格式,分别对应目标节点在 DMMAL.INI 中的配置项,具体如下:
●< 实例 IP 地址 >/< 实例端口号 > 对应 mal_inst_host/mal_inst_por。
●<MAL IP 地址 >/<MAL 端口号 > 对应 mal_host/mal_port。
● 实例名 对应 mal_inst_name。
-
<ORACLE 外部链接串 > 可以使用配置的网络服务名 tsn_name(网络服务名需要配置),或者连接描述符 description(连接描述符是网络连接目标特殊格式的描述,它包括网络协议、主库 IP 地址、端口号和服务名),或者 <IP 地址 >/< 服务名 >;
-
<ODBC 外部链接串 > DSN 需要用户手动配置;
-
<DPI 外部链接串 > 仅支持通过 DPI 接口访问远程达梦数据库,不需要进行额外配置;
-
<option 项 > 目前所支持的选项与取值如下:
● LOCAL_CODE:接口(DPI、OCI、JDBC 等接口)的字符集。若与服务器的字符集不一致,则需要进行转换。可取值为 UTF-8,GBK 或 GB18030。
● CONVERT_MODE:表示字符转换过程中对不完整字符的处理规则:0 表示截断不完整字符,不报错;1 表示报错处理。
● BYTES_IN_CHAR:整型数字,表示一个字符由多少个字节组成。
● DB_TYPE:设置目标数据库类型,目前支持 SQLSERVER、MYSQL、PI、ORACLE、DAMENG、OCEANBASE_ORACLE,仅对 ODBC 类型的 DBLINK 有效。
● DATA_CHARSET:设置接口返回给达梦服务器数据的实际字符集。取值为 UTF-8,GBK 或 GB18030。
● CASE_OPT:字符串类型,可取值'UPPER'或'LOWER';UPPER 选项表示对象名在发送到远端服务器前,将被自动转换成大写;LOWER 选项则表示将自动转换成小写。
3.2 本文使用DPI的方式
dpi类型的dblink,达梦数据库软件安装完成后自带DPI库,无需进行其他配置操作即可在数据库中直接创建dblink。
创建语法:
---方式1 IP:端口
create link "链接名" connect 'DPI' with "用户名" identified by "密码" using 'IP:端口';
---方式2 使用dm_svc.conf中服务名
create link "链接名" connect 'DPI' with "用户名" identified by "密码" using '服务名';
1)当使用 connect 'DPI' 方式时:DBLINK 查询命令正常使用,无上述报错:
2)当使用 connect 'DAMENG' 方式时:DBLINK 查询命令报错:MAL系统没有配置或者服务器不是企业版
从上面截图可以看出:当<连接库类型>选择是“DAMENG”时,需要配置dmmai.ini文件才行。文章来源:https://www.toymoban.com/news/detail-826164.html
详细的DBLINK信息可以查看:外部链接 | 达梦技术文档外部链接对象(LINK)是 DM 中的一种特殊的数据库实体对象,它记录了远程数据库的连接和路径信息,用于建立与远程数据的联系。通过多台数据库主库间的相互通讯,用户可以透明地操作远程数据库的数据,使应用程序看起来只有一个大型数据库。用户远程数据库中的数据请求,都被自动转换为网络请求,并在相应结点上实现相应的操作。用户可以建立一个数据库链接,以说明一个对象在远程数据库中的访问路径。这个链接可以是公用https://eco.dameng.com/document/dm/zh-cn/pm/external-link文章来源地址https://www.toymoban.com/news/detail-826164.html
到了这里,关于达梦DBLINK(DPI方式)查询报错:MAL系统没有配置或者服务器不是企业版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!