通过ODBC/dmmal配置DM(DSC)<>DM间的DBLINK

DM<>DM间的DBLINK(包括DM DSC、主备等集群),支持两种配置方式,一是通过mal系统,只需要通过配置 dmmal.ini 文件即可实现dblink。二是采用通用ODBC进行连接。以下以DM DSC集群<>DM8单机间的DBLINK为例,就两种方式分别进行说明。

一、配置dmmal实现dblink

配置dmmal要求每一个需要进行DBLINK连接的实例的mal项,都需要加入到dmmal.ini配置文件中,并且各个需要连接的实例中的dmmal.ini要求相同。

配置dmmal.ini文件时需要注意:

1、配置后需要重启实例

2、DM内部通讯是通过MAL_HOST和MAL_PORT进行互信,所以要求dmmal.ini中配置的所有MAL_HOST能够网络互通。

3、dmmal.ini中配置的MAL_INST_NAME,目前不可以重复,即要求各实例的实例名不能相同。

4、配置了dmmal.ini的实例,dm.ini中的MAL_INI需要设置为1

以下为DM DSC中dmmal.ini配置(DM DSC中各节点dmmal.ini配置均相同)。

MAL_CHECK_INTERVAL=87
MAL_CONN_FAIL_INTERVAL=33
MAL_SYS_BUF_SIZE=6000
MAL_BUF_SIZE=3000
MAL_VPOOL_SIZE=5000
MAL_COMPRESS_LEVEL=0

[mal_inst0]
    mal_inst_name  = DSC0
    mal_host       = DSC0心跳网
    mal_port       = 9340
    MAL_INST_HOST            = DSC0业务网
    MAL_INST_PORT            = 31236
    MAL_LINK_MAGIC = 0
[mal_inst1]
    mal_inst_name  = DSC1
    mal_host       = DSC1心跳网
    mal_port       = 9342
    MAL_INST_HOST            = DSC1业务网
    MAL_INST_PORT            = 31236
    MAL_LINK_MAGIC = 0

[mal_inst2]
    mal_inst_name  = DSC2
    mal_host       = DSC2心跳网
    mal_port       = 9344
    MAL_INST_HOST            = DSC2业务网
    MAL_INST_PORT            = 31236
    MAL_LINK_MAGIC = 0


[mal_inst3]   #单节点配置项
    mal_inst_name  = DMSERVER
    mal_host       = 单机心跳网
    mal_port       = 9348
    MAL_INST_HOST            = 单机业务网
    MAL_INST_PORT            = 5238
    MAL_LINK_MAGIC = 0   #MAL链路网段标识,有效值范围(0-65535)。默认 0 。
                   设置此参数时,同一网段内的节点都设置相同,不同网段内的节点设置的值必须不同 
                   搭建跨网段的DBLINK时如果内外网不通,则必须配置此参数,如果内外网互通,则 
                   可以不配

 DM8单机与DM DSC中的dmmal.ini配置也完全相同。

注:目前DM支持动态加载dmmal.ini配置,不需要重启数据库服务,也可以添加并应用mal配置项,过程如下:

SQL>SF_MAL_CONFIG(1,0);          --开启MAL配置状态
SQL>SF_MAL_INST_ADD(ITEM_NAME,INST_NAME,MAL_IP,MAL_PORT,MAL_INST_IP,MAL_I     NST_PORT,MAL_DW_PORT,MAL_LINK_MAGIC,MAL_INST_DW_PORT);

--可以新增配置项,不能修改和删除,设置时会对新增配置项的内容进行校验
SQL>SF_MAL_CONFIG_APPLY();    --MAL配置生效
SQL>SF_MAL_CONFIG(0,0);      --关闭

集群内如果用该方法进行配置,每节点均需要运行。

dmmal.ini修改后重启实例,先测试DM8单机到DM DSC集群的DBLINK.

使用DISQL连接到单机的实例,然后创建DBLINK。

SQL>CREATE or replace PUBLIC LINK DSC CONNECT 'DAMENG' WITH SYSDBA 
IDENTIFIED BY SYSDBA USING 'DSC0业务网/31236, DSC1业务网/31236, DSC2业务网/31236';

--注意

    1.外部连接串中的IP/端口也可以用实例名来代替,即'DSC0,DSC1,DSC2'.

    2.连接串中可以使用dmmal.ini中配置的心跳网,即MAL_HOST/MAL_PORT,也可以使用业务网,即MAL_INST_HOST/MAL_INST_PORT.建议配置业务网的ip和端口。

    3.连接串中默认是有连接顺序的,优先连接DSC0,当DSC0故障或无法连接时,连接DSC1.

DBLINK创建成功后,可以进行查询。

SQL>SELECT COUNT(*) FROM ALL_TABLES@DSC;

有返回值,测试成功。

接下来再测试DM DSC集群到DM8单机的DBLINK.

使用DISQL连接到DM DSC中的任意节点上,然后创建DBLINK。

SQL>CREATE or replace LINK LINK01 CONNECT 'DAMENG' WITH SYSDBA 
IDENTIFIED BY SYSDBA USING '单机业务网/5238';
---创建成功
SQL>SELECT * FROM V$INSTANCE@LINK01;
-----返回DMSERVER

DM DSC的任意节点上,都可以使用LINK01进行查询。

测试成功后,删除DBLINK.

--删除DM8到DM DSC DBLINK
SQL>DROP LINK LINK01;

--删除DMDSC 到DM8 DBLINK
DROP PUBLIC LINK DSC;

二、采用ODBC实现dblink

1、root用户安装Unixodbc

tar -xvf unixODBC-2.3.7.tar.gz -C /usr/local

cd /usr/local/unixODBC-2.3.7

./configure --prefix=/usr/local/unixODBC-2.3.7 --includedir=/usr/include --libdir=/usr/lib --bindir=/usr/bin --sysconfdir=/etc

make
make install
make clean
安装后测试,odbcinst -j
若报错:odbcinst: error while loading shared libraries: libodbcinst.so.2: cannot open shared object file: No such file or directory
则执行ldconfig,关联so

2、在odbcinst.ini中增加如下内容:

[DM ODBC DRIVER]

Description = ODBC driver for DM

Driver = /home/dmdba/dm8_190/dmdbms/bin/libdodbc.so

3、在odbc.ini中增加如下内容:

[DM2]
Description = DM ODBC DSN
Driver = DM ODBC DRIVER
SERVER = DSC   #DSC为DSC集群配置的服务名
UID = SYSDBA
PWD = SYSDBA_PWD
TCP_PORT = 31236

由于DM8单机dblink到DSC集群,需要连接DSC的服务名,所以需要在DM8单机的服务器中配置dm_svc.conf,默认在/etc下。

TIME_ZONE=(480)
LANGUAGE=(en)

DSC=(IP1:31236,IP2:31236,IP3:31236)

[DSC]
CLUSTER=(DSC)
DO_SWITCH=(2)
SWITCH_TIMES=(2000)
SWITCH_INTERVAL=(300)

配置好之后,做连接测试,isql DM2 -v

若出现报错:libdodbc.so file not found,排查环境变量是否设置正确,配置如下:

source /home/dmdba/.bash_profile

测试:

连接成功。然后通过disql连接数据库,创建DBLINK:

DSC到DM8单机的dblink类似,各节点均需要配置ODBC信息。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值