目录
1、dblink简介
2、dm到dm搭建dblink
2.1 准备条件
2 .2 操作步骤
2.2.1 创建dmmal.ini
2.2.2 修改配置文件
2.2.3 重启数据库实例
2.2.4 创建测试表
2.2.5 创建dblink
2.2.6 结果测试
3、dm到oracle搭建dblink
3.1 准备条件
3.2 操作步骤
3.2.1 oracle创建用户、测试表及启动监听,配置oracle客户端
3.2.2 配置dm到数据库链接
3.2.3 测试数据库dblink连接
3.2.4 结果测试
4、总结
1、dblink简介
达梦数据库的外部链接是一种数据库的实体对象,记录了远程数据库的连接信息,用于建立与远程数据的联系。用户可以通过数据库的外部链接对象透明地操作远程数据库的数据,对远程数据库的表进行查询和增删改操作,也可以调用远程的存储过程。数据库的外部链接对象可以是公用的(数据库中所有用户使用),也可以是私有的(特定用户使用)。
2、dm到dm搭建dblink
以下操作步骤用于创建 DM 到 DM 的外部链接,并使用外部链接对远程库做增、删、改、查的操作
2.1 准备条件
(1)两台数据库机器A 、B,均安装了达梦数据库。
(2)两台数据库机器A 、B,均关闭了防火墙和selinux。
(3)两台数据库机器A 、B的实例名不能一致,两个数据库的字符集必须一致。
环境介绍
| 数据库版本 | IP | 主机名 |
A | DM Database Server x64 V7 ENT | 192.168.6.7 | meng1 |
B | DM Database Server x64 V7 ENT | 192.168.6.6 | meng2 |
2 .2 操作步骤
2.2.1 创建dmmal.ini
两台数据库机器,第一台为目的主机A(被连接的机器),另外一台为测试机B(用来连接的机器),首先我们在两台机器的数据库实例下面创建dmmal.ini 文件
创建的内容如下:
[dmlink1] #自定义
mal_inst_name = DMSERVER #A主机的实例名,和dm.ini中的INSTANCE_NAME保持一致
mal_inst_host = 192.168.6.7 #A主机的ip地址
mal_inst_port = 5236 #A主机的实例端口,和dm.ini中的PORT_NUM保持一致
mal_host = 192.168.6.7 #A主机的ip地址
mal_port = 61142 #系统监听TCP连接端口(自定义)
[dmlink2] #自定义
mal_inst_name = DMSERVER2 #B主机的实例名,和dm.ini中的INSTANCE_NAME保持一致
mal_inst_host = 192.168.6.6 #B主机的ip地址
mal_inst_port = 5236 #B主机的实例端口,和dm.ini中的PORT_NUM保持一致
mal_host = 192.168.6.6 #B主机的ip地址
mal_port = 61142 #系统监听TCP连接端口(自定义)
注意:两台机器的dmmal.ini必须一致,A和B的实例名不能一样
2.2.2 修改配置文件
修改两台主机的dm.ini文件中的MAL_INI参数,改为1
2.2.3 重启数据库实例
重启两台主机的数据库实例
2.2.4 创建测试表
在A主机创建一个表test用来让B主机用外部连接进行操作
(1)登录进入数据库实例
(2)创建表test
2.2.5 创建dblink
在B(192.168.6.6)主机建立外部连接操作A(192.168.6.7)主机
建立外部连接语法如下:
create public link 外部连接名 connect with A主机登录用户 identified by A主机登录用户密码 using 'A主机ip/a主机系统监听TCP连接端口'
实际建立如下:
2.2.6 结果测试
在B主机中使用外部连接操作刚才在A主机中建立的数据库,插入一条数据,并提交。
然后去A主机中查询一下数据
达梦DBLINK搭建成功!
3、dm到oracle搭建dblink
3.1 准备条件
(1)一台数据库机器A安装了oracle数据库并启动监听。
(2)一台机器B安装了DM数据库和oracle数据库客户端。
(3)关闭防火墙和selinux。
环境介绍
| 数据库版本 | IP |
A | Oracle Database 11g 11.2.0.4.0 - 64bit | 192.168.6.6 |
B | DM Database Server x64 V7 ENT | 192.168.6.111 |
3.2 操作步骤
3.2.1 oracle创建用户、测试表及启动监听,配置oracle客户端
3.2.1.1 A(oracle)机器执行:
(1) 连接数据库创建测试用户user01密码user01,创建测试表test create user01 identified by user01; grant dba to user01; conn user01/user01 create table test (id int); insert into test values(1); commit; (2) 确认是否开启监听 lsnrctl status lsnrctl start lsnrctl stop |
3.2.1.1 B(dm+oracle客户端)机器执行
1.部署配置oracle客户端
下载安装包解压到B(dm)机器:
根据访问数据的版本下载对应客户端。每种包又分.zip、.rpm两种格式包,zip包相当于解压后免安装版,rpm包需要安装版。
(1)打开网页链接打开下图
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
(2)下载basic,sqlplus,sdk包,根据oracle的版本号下载如下图所示的压缩包(示范的oracle版本为11.2.0.4),需要oracle账号可以免费注册。
(3)下载的压缩包解压并合并
(4)使用xftp拷贝到达梦数据库安装路径/dmdbms/bin目录下面,数据库安装在linux上,需要赋予775的权限,部分如下图所示。
[dmdba@meng2 ~/dmdbms/bin/instantclient_11_2]$cp * ../
[root@meng2 bin]# chmod 755 *
3.2.2 配置dm到数据库链接
3.2.2.1 将libclntsh.so.11.1 复制一个名字为:libclntsh.so ,如下图所示:
/home/dmdba/dm/dmdbms/bin/>cp libclntsh.so.11.1 libclntsh.so
3.2.2.2 在上述目录新建目录
/home/dmdba/dm/dmdbms/bin/>mkdir -p ./network/admin
3.2.2.3 在上述目录新建tnsnames.ora文件,并编辑数据库链接信息
PROD= --链接名
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.6.111)(PORT = 1521))
-–A(oracle)机器
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID =PROD)
)
)
3.2.2.4 配置环境变量
[dmdba@meng2 ~]$vi .bash_profile
export ORACLE_HOME=/home/dmdba/dm/dmdbms/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME
export PATH=$ORACLE_HOME:$PATH
source .bash_profile
3.2.3 测试数据库dblink连接
3.2.3.1 只有能够连接上oracle才能创建dblink
sqlplus username/passwd@PROD
3.2.3.2 创建dblink,测试连接
方法一:
create or replace link LL connect 'ORACLE' with user01 identified by "user01" using 'PROD';
方法二:
create or replace public LINK test connect 'ORACLE' with user01 identified by "user01"
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.6.111)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = PROD )
)
)';
3.2.4 结果测试
测试能否查询oracle的数据
select * from test@test |
4、总结
综上,达梦数据库同构和异构之间的dblink搭建完成。通过验证环境工作正常,根据整个搭建过程总结以下几点:
1.达梦到达梦数据库之间的dblink依赖于dmmal系统,达梦通过mal系统实现redo日志传输,以及其他实例间的消息通讯。达梦到达梦之间的dblink搭建较为简单。
2.达梦到oracle数据库之间的dblink搭建稍微复杂,需要配置oracle客户端及环境变量,确保通过客户端可以连上服务端。
3.搭建过程中注意关闭防火墙和selinux。