DM-DM之间的DBLINK

外部链接对象(LINK)是 DM 中的一种特殊的数据库实体对象,它记录了远程数据库的连接和路径信息,用于建立与远程数据的联系。通过多台数据库主库间的相互通讯,用户可以透明地操作远程数据库的数据,使应用程序看起来只有一个大型数据库。用户远程数据库中的数据请求,都被自动转换为网络请求,并在相应结点上实现相应的操作。用户可以建立一个数据库链接,以说明一个对象在远程数据库中的访问路径。这个链接可以是公用的(数据库中所有用户使用),也可以是私有的(只能被某个用户使用)。用户可以通过外部链接对远程数据库的表进行查询和增删改操作,以及本地调用远程的存储过程。

1 创建外部链接

创建一个外部链接。

语法格式

  CREATE [OR REPLACE] [PUBLIC] LINK <外部链接名> CONNECT ['<连接库类型>'] WITH < 登录名> IDENTIFIED BY <登录口令> USING '<外部连接串>';

  <连接库类型> ::= DAMENG | ORACLE | ODBC

  <外部链接串>::=< DAMENG 外部链接串>| < ORACLE 外部链接串> | <ODBC 外部链接串>

  <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>

参数

  1. OR REPLACE 使用 OR REPLACE 选项的好处是,如果系统中已经有同名的数据库 链接名,服务器会自动用新的代码覆盖原来的代码。如果不使用 OR REPLACE 选项,当创建的新外部链接名称与系统中已有的外部链接名称同名时,服务器会报错。

  2. PUBLIC 此链接对象是否能够被创建者之外的用户引用;

  3. <外部链接名> 数据库链接的名称;

  4. <连接库类型> 目前只支持 DAMENG、ORACLE ODBC,默认为 DAMENG

  5. <登录名> 登录用户名称;C

  6. <登录口令> 登录用户口令;

  7. <连接类型> DBLINK 连接到多机环境时,可以设定<连接类型>和指定多台<服务器地址>。<连接类型>用来指定 DBLINK 将采用何种优先级别连接到<服务器列表>中的机器,共四种连接类型:PRIMARY FIRST 为主机优先连接;STANDBY FIRST 为备机优先连接;PRIMARY ONLY 为只连主机;STANDBY ONLY 为只连备机。缺省为 PRIMARY FIRST。<连接类型>为可选项,一旦指定了<连接类型>,则必须指定<服务器地址>数大于等于 2

  8. <DAMENG 外部链接串>支持三种格式,分别对应目标节点在 dmmal.ini 中的配置项,具体如下:

  l <实例 IP 地址>/<实例端口号> 对应 mal_inst_host/mal_inst_port

  l <MAL IP 地址>/<MAL 端口号> 对应 mal_host/mal_port

  l 实例名 对应 mal_inst_name

  9. <ORACLE外部链接串>可以使用配置的网络服务名tsn_name(网络服务名需要配置),或者连接描述符 description(连接描述符是网络连接目标特殊格式的描述,它包括网络协议、主库 IP 地址、端口号和服务名),或者<IP 地址>/<服务名>

  10. <ODBC 外部链接串>DSN 需要用户手动配置。

2、Dm-Dm自建的link演练

1.准备两台服务器,IP配置如下:

  DB1=192.168.3.115

  DB2=192.168.3.116

2.创建测试环境

  a.管理员登录DB1,创建用于DBLink的用户

CREATE USER dblinkuser IDENTIFIED BY link12345;
grant resource,dba to dblinkuser;

  b.用dblinkuser登录DB1,创建测试表

CREATE TABLE TestTable14(cField1 CHAR(10), vcField1 VARCHAR2(10), ncField1 NCHAR(10), nvcField1 NVARCHAR2(10));

3.两台机器都要配置dmmal.ini,打开dm.ini中MAL_INI参数为1,在两台机器中均配置dmmal.ini

[DAMENG]

MAL_INST_NAME=DMSERVER

MAL_HOST=192.168.3.115

MAL_PORT=5555

MAL_INST_PORT=5236

MAL_INST_HOST=192.168.3.115

[DAMENG1]

MAL_INST_NAME=WDMSERVER

MAL_HOST=192.168.3.116

MAL_PORT=5556

MAL_INST_PORT=5236

MAL_INST_HOST=192.168.3.116

重启两台机器的数据库服务

管理员登录DB2,创建DBLink

CREATE PUBLIC LINK DB1Link CONNECT  WITH dblinkuser IDENTIFIED BY "link12345" USING 'DMSERVER';

4.执行下列语句

INSERT INTO TestTable14@DB1Link(cfield1, vcfield1, ncfield1, nvcfield1)

VALUES ('1','2','3','4');

UPDATE TestTable14@DB1Link SET cfield1 = '11' WHERE cfield1 = '1';

DELETE FROM TestTable14@DB1Link WHERE cfield1='11';

SELECT * FROM TestTable14@DB1Link;

以上步骤各语句执行正确,数据正确插入、更新及删除,并能正确查出。

 

posted @ 2020-11-10 10:35  她脚踝银铃响了  阅读(312)  评论(0)    收藏  举报