目录
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
DM8服务器:192.168.16.203
DM8服务器:192.168.16.200
检查防火墙状态
systemctl status firewalld.service
暂时关闭防火墙,下次启动时防火墙仍随系统启动而启动
systemctl stop firewalld.service
彻底永久关闭防火墙
systemctl disable firewalld.service
vim dm.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
DmServiceDMSERVER restart
目标服务器200开启mal服务并配置dmmal.ini文件(两台服务器一致)
复制203的即可
重启200数据库
DmServiceDMSERVER restart
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文件
Oracle19c服务器:192.168.16.67
DM8服务器:192.168.16.203
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
cd /dm8/script/root
./dm_service_installer.sh -t dmserver -dm_ini /dm/data/DMDB/dm.ini -p DMSERVER
DmServiceDMSERVER start
连接服务
Disql
配置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
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)
)
)
echo $ORACLE_HOME
SELECT * FROM NLS_DATABASE_PARAMETERS;
客户端下载地址
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 --检查依赖是否完整(这里完整的)
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'
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)
)
)
vim dm.ini
MAL_INI = 1
(我这里只是指定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
加载oracle数据库的lib库
DmServiceDMSERVER restart
环境变量中配置
export PATH=$PATH:$ORACLE_HOME:$DM_HOME/bin/instantclient_19_19
可以直接任何位置sqlplus
用户名小写时不要引起来(底层自动转化为大写,引起来转不了)。实例名大小写均可
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) )
)';
(三) 通过
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);
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