达梦数据库dblink测试(DM-ORACLE19c及DM8-DM8)

目录

DM与DM创建DBLINK. 3

一、配置203服务器... 3

1、主服务器203开启mal服务... 3

2、主服务器203配置dmmal.ini文件... 3

3、重启203数据库... 4

二、配置200服务器... 4

三、创建dblink. 4

DM与Oracle数据库创建dblink. 5

一、DM服务器:... 6

1、初始化实例... 6

2、注册服务: root 用户进行注册。... 6

3、启动服务... 6

二、Oracle服务器配置... 6

1、oracle数据库必须注册监听,并启动监听... 6

2、配置tnsname文件... 8

3、查询ORACLE_HOME路径... 9

4、查询oracle字符集... 9

三、DM服务器操作... 9

1、下载客户端... 9

2、配置环境变量... 10

3、配置tnsname.ora文件... 11

4、达梦服务器需要开启dmmal服务... 12

5、配置dmmal.ini 12

6、重启DM数据库... 13

7、测试sqlplus能否链接,连接成功... 13

8、创建db_link. 14

9、测试... 16

DM与DM创建DBLINK

DM8服务器:192.168.16.203

DM8服务器:192.168.16.200

检查防火墙状态

systemctl status firewalld.service

暂时关闭防火墙,下次启动时防火墙仍随系统启动而启动

systemctl stop firewalld.service

彻底永久关闭防火墙

systemctl disable firewalld.service

一、配置203服务器

1、主服务器203开启mal服务

vim dm.ini

2、主服务器203配置dmmal.ini文件

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间

[MAL_INST1]

MAL_INST_NAME = DBSERVER #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST = 192.168.16.203 #MAL 系统监听 TCP 连接的 IP 地址

MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口 (主备机传输日志)

MAL_INST_HOST = 192.168.16.203 #实例的对外服务 IP 地址

MAL_INST_PORT = 5236 #实例的对外服务端口 dm.ini 中的 PORT_NUM 一致

[MAL_INST2]

MAL_INST_NAME = DMSERVER

MAL_HOST = 192.168.16.200

MAL_PORT = 61141

MAL_INST_HOST = 192.168.16.200

MAL_INST_PORT = 5237

3、重启203数据库

DmServiceDMSERVER restart

二、配置200服务器

目标服务器200开启mal服务并配置dmmal.ini文件(两台服务器一致)

复制203的即可

重启200数据库

DmServiceDMSERVER restart

三、创建dblink

disql

例:使用DM数据库203,创建一个连接到IP200,MAL_PORT端口5237 的MAL站点的外部链接,登录到此站点使用的用户名为SYSDBA,密码为SYSDBA,实例名为:DMSERVER。

CREATE PUBLIC LINK LINK200 CONNECT 'DAMENG' WITH SYSDBA IDENTIFIED BY SYSDBA USING '192.168.16.200/5237';

CREATE PUBLIC LINK LINK201 CONNECT WITH SYSDBA IDENTIFIED BY SYSDBA using 'DMSERVER';

CREATE PUBLIC LINK LINK203 CONNECT 'DAMENG' WITH dm_hr IDENTIFIED BY "hr1234567" USING '192.168.16.200/5237';

CREATE PUBLIC LINK LINK204 CONNECT WITH dm_hr IDENTIFIED BY "hr1234567" using 'DMSERVER';

测试:均可以

insert into dept@LINK200 values(200,400);

insert into dept@LINK203 values(205,405);

commit;

小结:DM到DM的dblink必须双方都开启mal服务并且都配置dmmal.ini文件

DM与Oracle数据库创建dblink

Oracle19c服务器:192.168.16.67

DM8服务器:192.168.16.203

一、DM服务器:

1、初始化实例

su - dmdba

./dminit path=/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=DBSERVER PORT_NUM=5236

2、注册服务: root 用户进行注册。

cd /dm8/script/root

./dm_service_installer.sh -t dmserver -dm_ini /dm/data/DMDB/dm.ini -p DMSERVER

3、启动服务

DmServiceDMSERVER start

连接服务

Disql

二、Oracle服务器配置

1、oracle数据库必须注册监听,并启动监听

配置listener.ora监听文件

vim listener.ora

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = oracle19c-01)(PORT = 1521))

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

)

)

SID_LIST_LISTENER1 =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME =orcl)

(ORACLE_HOME = /u01/app/oracle/product/19c/db_1)

(SID_NAME = orcl)

)

)

重启监听

lsnrctl stop

lsnrctl start

lsnrctl status

2、配置tnsname文件

vim tnsnames.ora

LISTENER_ORCL =

(ADDRESS = (PROTOCOL = TCP)(HOST = oracle19c-01)(PORT = 1521))

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.67)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

CATALOG =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = Oracle19c-asm)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

3、查询ORACLE_HOME路径

echo $ORACLE_HOME

4、查询oracle字符集

SELECT * FROM NLS_DATABASE_PARAMETERS;

三、DM服务器操作

1、下载客户端

客户端下载地址

https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

下载三个zip包:basic、sdk、sqlplus解压

解压到DM服务器

mkdir -p /opt/dblink/instantclient

unzip xxx --三个包都自动解压到这一个目录里面了。。

复制所有lib到/dm8/bin

cp lib* /dm8/bin

cd /dm8/bin

将libclntsh.so.19.1建立软连接名为libclntsh.so

ln -s libclintsh.so.19.1 libclintsh.so

或者直接

cp libclintsh.so.19.1 libclintsh.so

ldd libclintsh.so.19.1 --检查依赖是否完整(这里完整的)

2、配置环境变量

vim .bash_profile --蓝色的为创建dblink新增oracle配置,原DM配置不动。LANG=zh_CN.UTF8这个参数可以使本会话linux显示为中文

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm8/bin" ##原DM库配置

export DM_HOME="/dm8"

export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool

export ORACLE_HOME=/u01/app/oracle/product/19c/db_1 ## 远程Oracle端的$ORACLE_HOME;

export ORACLE_SID=orcl ## 远程Oracle端的SID;

export TNS_ADMIN=/dm8/bin/instantclient_19_19/network/admin ## 服务名文件所在目录;

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 ## 远程Oracle端的字符集;

export LD_LIBRARY_PATH==$LD_LIBRARY_PATH:$ORACLE_HOM:/dm8/bin ##添加ORACLE的dblink后的配置

export PATH=$PATH:$ORACLE_HOME:$DM_HOME/bin/instantclient_19_19 ##这个路径配置sqlplus的路径,配置好了之后任何地方都可以sqlplus直接登录了

#export LANG=zh_CN.UTF8

#unset USERNAME

alias disql='rlwrap disql'

alias dmrman='rlwrap dmrman'

3、配置tnsname.ora文件

cd /dm8/bin/instantclient_19_19/network/admin

vim tnsname.ora

这里就是复制oracle的,只是将host改为ip了

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.67)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

4、达梦服务器需要开启dmmal服务

vim dm.ini

MAL_INI = 1

5、配置dmmal.ini

(我这里只是指定oracle的ip和端口及实例名即可)

vim dmmal.ini

MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔

MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间

[MAL_INST1]

MAL_INST_NAME = DBSERVER #实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST = 192.168.16.203 #MAL 系统监听 TCP 连接的 IP 地址(内网ip,因为oracle一个网卡就一个16段ip,这里也只能使用16段ip了)

MAL_PORT = 61141 #MAL 系统监听 TCP 连接的端口(主备机传输日志) --这里好像也不需要呢,这里写了也没问题(后来验证貌似必须要写呢)

MAL_INST_HOST = 192.168.16.203 #实例的对外服务 IP 地址

MAL_INST_PORT = 5236 #实例的对外服务端口 dm.ini 中的 PORT_NUM 一致

[MAL_INST2]

MAL_INST_NAME = orcl

MAL_HOST = 192.168.16.67

MAL_PORT = 1521

6、重启DM数据库

加载oracle数据库的lib库

DmServiceDMSERVER restart

7、测试sqlplus能否链接,连接成功

环境变量中配置

export PATH=$PATH:$ORACLE_HOME:$DM_HOME/bin/instantclient_19_19

可以直接任何位置sqlplus

8、创建db_link

用户名小写时不要引起来(底层自动转化为大写,引起来转不了)。实例名大小写均可

public link属于sys所有。私有link属于哪个用户创建属于哪个用户。

CREATE PUBLIC LINK "HR_LINK" CONNECT 'ORACLE' WITH hr IDENTIFIED BY "hr" USING '192.168.16.67/orcl';

CREATE PUBLIC LINK "HR_LINK02" CONNECT 'ORACLE' WITH HR IDENTIFIED BY "hr" USING '192.168.16.67/orcl';

CREATE PUBLIC LINK "HR_LINK03" CONNECT 'ORACLE' WITH HR IDENTIFIED BY "hr" USING '192.168.16.67/ORCL';

测试:select * from dept@HR_LINK03;

CREATE LINK LINK1 CONNECT 'ORACLE' WITH hr IDENTIFIED BY hr USING '192.168.16.67/orcl';

(一) 通过网络服务名创建 --这是在dm服务器上配置了tnsname文件并在配置文件中指定了该tns文件目录。

CREATE LINK HR_LINK05 CONNECT 'ORACLE' WITH hr IDENTIFIED BY hr USING 'ORCL';

CREATE LINK HR_LINK06 CONNECT 'ORACLE' WITH hr IDENTIFIED BY hr USING 'orcl';

(二) 通过连接描述符创建

CREATE OR REPLACE LINK HR_LINK08 CONNECT 'ORACLE' WITH hr IDENTIFIED BY hr USING

'(DESCRIPTION =

(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.67)(PORT = 1521)))

(CONNECT_DATA = (SERVICE_NAME = orcl) )

)';

(三) 通过<IP 地址>/<服务名>创建

CREATE LINK HR_LINK10 CONNECT 'ORACLE' WITH hr IDENTIFIED BY hr USING '192.168.16.67/orcl';

例:使用 DM 数据库,创建一个连接到实例名为 ORCL 的外部链接,登录到此站点使用的用户名为hr,设置登录口令为hr,设置使用本地字符集为 UTF-8,字符集转换模式为 1。

注:DBLINK 的本地库和远程库的字符集编码应一致,否则可能导致字符串操作出错

CREATE LINK HR_LINK11 CONNECT 'ORACLE' WITH hr IDENTIFIED BY hr USING 'ORCL' OPTION (LOCAL_CODE='UTF-8', CONVERT_MODE=1);

9、测试

select * from dept@HR_LINK11;

插入数据

DM库

insert into dept@HR_LINK11 values(200,400);

commit;

Oracle库查到了

update dept@HR_LINK11 set bonus=420 where EMPLOYEE_ID =200;

commit;

delete from dept@HR_LINK11 where EMPLOYEE_ID =200;

commit;

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值