当前位置: 首页 > news >正文

达梦数据库同构异构 DBLINK

数据库链接对象 (LINK) 是 DM 中的一种特殊的数据库实体对象,它记录了远程数据库的连接和路径信息,用于建立与远程数据的联系。针对达梦数据库(DM)的数据库链接(DBLINK)搭建,无论是同构环境(DM 到 DM)还是异构环境(DM 到 Oracle、MySQL 等),其核心均依赖于创建链接对象时对远程数据库的连接信息、驱动类型及访问权限的精确配置。

同构 DBLINK(DM -DM) 搭建最为直接,利用达梦自身的 MAL 系统或常规网络通信即可实现。

异构 DBLINK(DM -Oracle /MySQL /SQL Server 等) 则需要依赖达梦提供的外部链接驱动(如 DCI 驱动连接 Oracle,ODBC 驱动连接 MySQL)。

无论同构还是异构,创建后均可像访问本地表一样通过 表名@链接名 进行远程 SQL 操作。

一 同构 DBLINK(dm-dm)

1.DM的安装部署

可以参考DM8的安装部署-CSDN博客

2.创建同构 DBLINK

数据库1

数据库2

IP地址

192.168.140.139

192.168.140.140

实例名

DBLINK01

DBLINK02

数据库名

DBLINK01

DBLINK02

MAL端口

5336

5336

数据库软件目录

/home/dmdba/dmdbms

/home/dmdba/dmdbms

数据库实例目录

/dmdata/data/DBLINK01

/dmdata/data/DBLINK02

操作系统

Kylin

Kylin

1.修改dm.ini文件

MAL_INI = 1

2.配置 dmmal.ini 文件

数据库1和数据库2 dmmal.ini 文件

[MAL_INST1] MAL_INST_NAME = DBLINK01 MAL_HOST = 192.168.140.139 MAL_PORT = 5336 [MAL_INST2] MAL_INST_NAME = DBLINK02 MAL_HOST = 192.168.140.140 MAL_PORT = 5336

3.验证

数据库1

-- 创建表 T1 CREATE TABLE T1(C1 INT, C2 VARCHAR(20)); -- 插入测试数据 INSERT INTO T1 VALUES(1, 'A'); INSERT INTO T1 VALUES(2, 'B'); INSERT INTO T1 VALUES(3, 'C'); COMMIT; -- 验证 SELECT * FROM T1;

数据库2

-- 创建指向数据库1的 DBLINK CREATE PUBLIC LINK "LINK02" CONNECT 'DAMENG' WITH "SYSDBA" IDENTIFIED BY "Zs010310" USING '192.168.140.139/5236';

测试1:数据库2查看数据库1T1表数据

测试2:数据库2通过创建的LINK02向数据库1的表T1中插入数据

SQL> INSERT INTO T1@LINK02 VALUES(4, 'D'); INSERT INTO T1@LINK02 VALUES(5, 'E');

数据库2远程查看

数据库1查看

二 异构 DBLINK(dm-oracle)

1.Oracle 19c安装部署

1 环境配置准备

1.1防火墙配置

systemctl stop firewalld.service setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

1.2安装依赖包

yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel bc readline-devel elfutils-libelf elfutils-libelf-devel

1.3创建用户和组

groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper useradd -u 54321 -g oinstall -G dba,oper oracle echo 密码 | passwd --stdin oracle

1.4创建软件安装目录

mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1 mkdir -p /u01/app/oraInventory mkdir -p /u01/app/oracle/oradata mkdir -p /u01/app/oracle/fast_recovery_area chown -R oracle:oinstall /u01 chmod -R 775 /u01

2.配置内核参数

2.1编辑 sysctl.conf 文件

cat >> /etc/sysctl.conf << 'EOF' fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.ip_local_port_range = 9000 65500 fs.aio-max-nr = 1048576 EOF

2.2使内核参数生效

sysctl -p

2.3配置用户限制

cat >> /etc/security/limits.conf << 'EOF' oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768 oracle soft memlock 6291456 oracle hard memlock 6291456 EOF

2.4 启用 PAM 限制模块

echo "session required pam_limits.so" >> /etc/pam.d/login

3.Oracle 用户环境配置

# 切换到 oracle 用户 su - oracle # 编辑环境变量 cat >> /home/oracle/.bash_profile << 'EOF' export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1 export ORACLE_SID=ORCL export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 EOF # 使环境变量生效 source /home/oracle/.bash_profile

4.可视化安装

#解压 unzip -q /home/oracle/LINUX.X64_193000_db_home.zip -d $ORACLE_HOME mkdir -p $ORACLE_HOME/response # root窗口执行 xhost + # 新开一个终端,切换oracle用户依次执行 su - oracle export DISPLAY=:0.0 cd $ORACLE_HOME ./runInstaller

切换终端root运行

5.配置监听(图形化)

su - oracle netca

2. 异构 DBLINK

通过 OCI(Oracle Call Interface)方式配置 DM8 与 Oracle 19c 的异构 DBLINK 连接

DM数据库

Oracle数据库

IP地址

192.168.140.142

192.168.140.142

实例名

DBSERVER

TEST

数据库名

DMTEST

TEST

端口

5237

1521

数据库软件目录

/home/dmdba/dmdbms

/u01/app/oracle/product/19.3.0/dbhome_1

数据库实例目录

/dmdata/data/DMTEST

/u01/app/oracle/oradata/TEST

操作系统

CentOS 7

CentOS 7

CPU架构

x86_64

x86_64

数据库版本

DM8

19c

1. oracle建表

sqlplus / as sysdba -- 创建新用户 CREATE USER ORADBA IDENTIFIED BY 密码; -- 授权 GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO ORADBA; -- 切换用户 CONN ORADBA/Zs010310; -- 建表 CREATE TABLE ORA1 (C1 INT, C2 VARCHAR(20)); -- 插入数据 INSERT INTO ORA1 VALUES(1, 'A'); INSERT INTO ORA1 VALUES(2, 'B'); INSERT INTO ORA1 VALUES(3, 'C'); COMMIT;

2.配置Oracle Instant Client

# root用户执行 # 创建目录 cd /opt/oracle unzip /home/zhangsu/instantclient-basic-linux.x64-11.2.0.4.0.zip -d /opt/oracle # 创建软链接 cd /opt/oracle/instantclient_11_2 ln -s libclntsh.so.11.1 libclntsh.so ln -s libocci.so.11.1 libocci.s

3. 配置DM环境变量

# 切换到dmdba用户 su - dmdba # 编辑环境变量 vi ~/.bash_profile # 增加环境变量 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/oracle/instantclient_11_2" export ORACLE_HOME=/opt/oracle/instantclient_11_2 export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # 使环境变量生效 source ~/.bash_profile
# root用户重启DM服务 systemctl restart DmServiceDBSERVER

4.创建DBLINK

# 切换到dmdba用户 su - dmdba # 登录DM数据库 cd /home/dmdba/dmdbms/bin ./disql SYSDBA/密码@localhost:5237
-- 创建DBLINK CREATE PUBLIC LINK "LINK1" CONNECT 'ORACLE' WITH "ORADBA" IDENTIFIED BY "密码" USING '192.168.140.142:1521/TEST';

5.测试DBLINK

  • 从 Oracle 数据库 查询返回的当前系统时间
SELECT SYSDATE FROM DUAL@LINK1;

  • DM查询ORACLE数据

  • DM通过DBLINK对ORACLE插入数据

DM查询

ORACLE查询

三 异构 DBLINK(dm-mysql)

1.mysql安装部署

1 下载安装

# root用户执行 # 创建repo文件 cat > /etc/yum.repos.d/mysql-community.repo << 'EOF' [mysql57-community] name=MySQL 5.7 Community Server baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/ enabled=1 gpgcheck=0 EOF

2 修改密码

# root用户执行 # 启动服务 systemctl start mysqld # 查看临时密码 grep 'temporary password' /var/log/mysqld.log # root用户执行 # 用临时密码登录(注意单引号) mysql -uroot -p'临时密码' -- 修改密码策略(允许简单密码) set global validate_password_policy=0; set global validate_password_length=1; flush privileges; -- 修改密码为 ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; flush privileges; -- 退出 EXIT;

3 创建测试表

-- 创建用户 CREATE USER 'dmuser'@'%' IDENTIFIED BY 'Zs010310'; GRANT ALL PRIVILEGES ON *.* TO 'dmuser'@'%' WITH GRANT OPTION; flush privileges; -- 创建数据库和表 CREATE DATABASE testdb; USE testdb; CREATE TABLE t1 (id INT, name VARCHAR(20)); INSERT INTO t1 VALUES(1, 'A'),(2, 'B'),(3, 'C');

2. 异构DBLINK

本文档描述通过 ODBC(Open Database Connectivity)方式配置 DM8 与 MySQL 的异构 DBLINK 连接

DM数据库

MySQL数据库

IP地址

192.168.140.142

192.168.140.142

端口

5237

3306

用户

SYSDBA

root

1 安装和配置ODBC

# root用户执行 # 安装unixODBC yum install -y unixODBC unixODBC-devel # 下载ODBC驱动 wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.33-1.el7.x86_64.rpm # 安装 rpm -ivh mysql-connector-odbc-8.0.33-1.el7.x86_64.rpm --nodeps

驱动配置

# root用户执行 # 配置 odbcinst.ini(驱动配置) cat > /etc/odbcinst.ini << 'EOF' [DM8 ODBC DRIVER] Description=DM ODBC DRIVER FOR DM8 Driver=/home/dmdba/dmdbms/drivers/odbc/libdodbc.so FileUsage=1 [MySQL ODBC 8.0 Unicode Driver] Description=MySQL ODBC 8.0 Unicode Driver Driver=/usr/lib64/libmyodbc8w.so UsageCount=1 EOF

数据源配置

cat > /etc/odbc.ini << 'EOF' [MYSQL_DBLINK] Driver=MySQL ODBC 8.0 Unicode Driver Server=127.0.0.1 Port=3306 Database=testdb User=root Password=Zs010310 Charset=utf8mb4 EOF

测试连接

isql MYSQL_DBLINK

配置DM环境变量

# 切换到dmdba用户 su - dmdba # 查看当前环境变量 echo $LD_LIBRARY_PATH
# 编辑环境变量 vi ~/.bash_profile export DM_HOME="/home/dmdba/dmdbms" export LD_LIBRARY_PATH="$DM_HOME/bin:/usr/lib64" export ODBCINI=/etc/odbc.ini export ODBCSYSINI=/etc

创建DBLINK

cd /home/dmdba/dmdbms/bin ./disql SYSDBA/Zs010310@localhost:5237 #创建DBLINK CREATE LINK MYSQL_LINK CONNECT 'ODBC' WITH "root" IDENTIFIED BY "Zs010310" USING 'MYSQL_DBLINK';

DM查询MYSQL的数据

SELECT * FROM "t1"@MYSQL_LINK;

达梦社区地址
https://eco.dameng.com

http://www.jsqmd.com/news/1341646/

相关文章:

  • 想在开平买纯种圆环观赏鸽,养殖场怎么选才靠谱啊?
  • Debian 使用 FTP 镜像源配置 APT 软件源
  • 广州职务类经济犯罪刑事律师哪个靠谱:【法纳刑辩】认真负责 - 松梢月冷
  • 服装店应对电商冲击:实体门店不该补的短板和该守的阵地
  • WarcraftHelper魔兽争霸3终极兼容性解决方案:5分钟告别卡顿乱码问题
  • Seraphine:英雄联盟智能助手,让每一场对局都基于数据决策
  • ComfyUI ReActor换脸插件终极指南:如何在1秒内完成专业级AI面部替换
  • 从学术研究到商业应用:SenseNova-U1.5-8B-MoT-Preview的技术演进与产业价值
  • 开放协作与数据安全,制造业不必二选一
  • MCP 架构详解:Host、MCP Client、MCP Server 的职责与代码实战
  • Unity响应式编程R3安装指南:从环境配置到项目集成
  • 零成本医疗影像革命:Horos医学影像软件的完整使用指南
  • 烽火HG6145F3光猫超级密码获取实战:从权限破解到网络管理
  • Score-Entropy-Discrete-Diffusion模型架构揭秘:从small.yaml配置到Transformer实现
  • 域名解析网站建设:从注册到上线的完整避坑指南,教你打造高转化的企业官网
  • 深入理解es6-shim:从源码角度看ES6 API的polyfill技巧
  • 深耕首都职业教育基石:探秘北京市建设教育协会网站如何赋能建筑人才转型与行业升级
  • 深圳GEO优化公司 深圳GEO方案供应商 资深GEO技术团队深度重构算法霸权
  • 服装实体店线上引流,2026年值得复盘一遍的7个关键做法
  • 2026年厦门招聘平台哪个好:帅聘网会计岗位 - 17728181569
  • 揭秘gh_mirrors/examples113/examples:Node.js开发者不容错过的实战项目解析
  • ppo和奖惩机制结合源码
  • 2025东莞锡块锡条回收哪家好?豪发废锡回收公司推荐 - geo88
  • 实战拆解:年 GMV60 亿级私域团购系统 分销关系存储、分账对账与合规校验技术落地
  • 1.2 联结词
  • 5款主流智能写作工具实测对比!2026年办公写作实用选择指南 - 品牌测评鉴赏家
  • Steam游戏自动破解器:3分钟学会全自动破解Steam游戏DRM保护
  • 魔兽争霸3终极优化指南:5个简单步骤让经典游戏在现代电脑完美运行
  • 信息学竞赛这条路,信竞生最后大多走向这 5 种结局
  • 为什么选择pi05_libero_base?揭秘其开放世界泛化能力的关键技术