达梦数据库DM8配置DBLink实现跨库访问

一、修改dm.ini配置

进入达梦数据库启动实例的文件dm.ini中启动MAL_INI参数,并修改互通的库实例名字

ps:先停掉两个数据库实例服务,修改的dm.ini必须是启动达梦数据库实例的配置文件

修改/home/dmdba/dm/dmdbms/bin/dm.ini 中MAL_INI=1
如下例子:修改对应数据库的实例名称
     数据库1的INSTANCE_NAME=DMSERVER1
     数据库2的INSTANCE_NAME=DMSERVER2

二、配置dmmal.ini

    在实例数据文件DAMENG中创建dmmal.ini文件进行如下配置
     配置dmmal.ini  放到/dbdata/dmdata/DAMENG下 

ps:两台数据库的dmmal.ini配置一样

如下面例子:

vi dmmal.ini
[MAL_INST1] 
MAL_INST_NAME = DMSERVER1
MAL_HOST = 192.168.163.141   #数据库1的ip
MAL_PORT = 6437                     #数据库1的mal 端口
MAL_INST_HOST = 192.168.163.141    #数据库1的ip
MAL_INST_PORT = 5236            #实例端口,默认都是5236

[MAL_INST2]
MAL_INST_NAME = DMSERVER2
MAL_HOST = 192.168.163.145    #数据库2的ip
MAL_PORT = 6438                     #数据库2的mal 端口
MAL_INST_HOST = 192.168.163.145   #数据库2的ip
MAL_INST_PORT = 5236            #实例端口,默认都是5236

三、重启服务

重启数据库服务进入bin目录中(ps:下面服务脚本是之前设定的,按照自己实际情况启动即可)

./dmservserd start 


四、创建数据库连接

进入disql工具执行如下操作

ps:解释

1、create link: 这是创建数据库链接的命令。

2、"SYSDBA"."DM1": 这指定了链接的名称为 "DM1",属于 "SYSDBA" 用户。

3、connect 'DAMENG': 这表明链接将连接到 "DAMENG" 数据库。

4、with "SYSDBA" identified by "SYSDBA": 这指定了在连接时使用的用户名和密码。在这里,用户名是 "SYSDBA",密码也是 "SYSDBA"。

5、using 'DMSERVER1': 这指定了链接使用的服务器名称或地址,这里是 'DMSERVER1'。

因此,整个命令的目的是创建一个名为 "DM1" 的数据库链接,连接到 "DAMENG" 数据库,使用 "SYSDBA" 用户名和密码,并在 'DMSERVER1' 服务器上进行连接。

A、实例dmserver 1 中,创建连接
./disql SYSDBA/SYSDBA
create link "SYSDBA"."DM2" connect 'DAMENG' with "SYSDBA" identified by "SYSDBA" using 'DMSERVER2';

B、实例dmserver 2 中,创建连接
./disql SYSDBA/SYSDBA
create link "SYSDBA"."DM1" connect 'DAMENG' with "SYSDBA" identified by "SYSDBA" using 'DMSERVER1';

五、创建用户之间的公共链接

创建nc用户之间的public link

ps:解释:

1、create public link peerdb: 这是创建公共数据库链接的命令。"peerdb" 是链接的名称,这表示可以被其他用户访问。

2、connect 'DAMENG': 这表明链接将连接到 "DAMENG" 数据库。

3、with nc identified by "pubuser6186": 这指定了在连接时使用的用户名和密码。在这里,用户名是 "nc",密码是 "pubuser6186"。

4、using 'DMSERVER2': 这指定了链接使用的服务器名称或地址,这里是 'DMSERVER2'。

因此,整个命令的目的是创建一个名为 "peerdb" 的公共数据库链接,连接到 "DAMENG" 数据库,使用 "nc" 用户名和 "pubuser6186" 密码,并在 'DMSERVER2' 服务器上进行连接。这意味着其他用户可以访问并使用这个公共链接。

A、实例dmserver 1中
./disql SYSDBA/SYSDBA
create public link peerdb connect 'DAMENG' with nc identified by "pubuser6186" using 'DMSERVER2';

B、实例dmserver 2 中
./disql SYSDBA/SYSDBA
create public link peerdb connect 'DAMENG' with nc identified by "pubuser6186" using 'DMSERVER1';

六、验证

查询设置dblink信息: 

select * from dba_db_links;

测试:

查询DMSERVER1中的表

在实例DMSERVER2中查询DMSERVER1中的表

至此:达梦数据库dblink设置完成

更多讯息分享请前往:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

### 配置达梦数据库中的DBLink以连接至Oracle #### 使用OCI接口配置DBLink 为了使达梦数据库能够通过DBLink访问Oracle数据库,推荐采用Oracle OCI(Oracle Call Interface)方式进行配置[^3]。 - **下载并安装Oracle客户端驱动** Oracle Instant Client 是实现这一目标所必需的组件之一。可以从指定网站获取适用于操作系统的最新版本Instant Client包,并按照说明完成安装过程。 - **创建监听器** 在Oracle端需建立一个监听程序来接收来自达梦数据库发出的数据请求。这通常涉及到编辑`listener.ora`文件以及启动监听服务[^5]。 - **修改tnsnames.ora文件** 此文件用于定义网络服务名与实际数据库实例之间的映射关系,在其中添加针对目标Oracle数据库的服务条目是必要的步骤之一。 ```bash # Example entry in tnsnames.ora file ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host_ip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl_service_name) ) ) ``` - **在达梦侧执行SQL命令创建DBLink对象** 完成上述准备工作之后,可以在达梦环境中利用如下语句构建指向远程Oracle数据库链接: ```sql CREATE DATABASE LINK dblink_oracle CONNECT TO username IDENTIFIED BY password USING 'orcl'; ``` 此处`username`, `password`代表具有适当权限的Oracle账户凭证;而`'orcl'`则是之前于`tnsnames.ora`内设定好的网络服务名称[^4]。 --- #### ODBC方式配置DBLink 对于某些特定场景下可能更倾向于使用ODBC作为中间件来进行平台间通信,则可考虑基于此协议实施相应设置。 - **注册ODBC数据源** 参照相关文档指导,在操作系统层面建立起名为DM_TO_ORA_DSN的新DSN资源,确保其参数正确无误地指向待接入的目标Oracle服务器实例[^1]。 - **编写连接字符串** 构建适配当前环境变量条件下的完整连接串表达式,该字符串将被用来初始化后续所有经由本路径发起的操作指令集。 ```sql CREATE DATABASE LINK dblink_odbc CONNECT TO "SCHEMA" IDENTIFIED BY "PASSWORD" USING '(DESCRIPTION=(DRIVER={Microsoft ODBC for Oracle};SERVER=//oracle_server:port/service_name))' ``` 请注意替换掉模板里的占位符部分(`SCHEMA`,`PASSWORD`)为真实的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值