达梦8的dblink

简介:外部链接对象(LINK)是 DM 中的一种特殊的数据库实体对象,它记录了远程数据库的连接和路径信息,用于建立与远程数据的联系。通过多台数据库主库间的相互通讯,用户可以透明地操作远程数据库的数据,使应用程序看起来只有一个大型数据库。用户远程数据库中的数据请求,都被自动转换为网络请求,并在相应结点上实现相应的操作。用户可以建立一个数据库链接,以说明一个对象在远程数据库中的访问路径。这个链接可以是公用的(数据库中所有用户使用),也可以是私有的(只能被某个用户使用)。
用户可以通过外部链接对远程数据库的表进行查询和增删改操作,以及本地调用远程的存储过程。

下面章节主要针对三个部分进行操作的配置和注意事项

达梦8-达梦8的dblink访问

方式一:开启DMAL,重启数据库

1.两套数据库配置DMMAL参数文件

源端:192.168.1.225(DMSERVER01)

远端:192.168.1.223(DMSERVER02)

cat > dmmal.ini

[MAL_INST1]

MAL_INST_NAME=DMSERVER01

MAL_HOST=192.168.1.225

MAL_PORT=62141

MAL_INST_PORT=5236

MAL_INST_HOST=192.168.1.225

[MAL_INST2]

MAL_INST_NAME=DMSERVER02

MAL_HOST=192.168.1.223

MAL_PORT=62142

MAL_INST_PORT=5236

MAL_INST_HOST=192.168.1.223

EOF

2.设置dm.ini文件中MAL_INI参数值为1,重启两套数据库生效。

3.使用disql工具登录本地数据库创建dblink

create public link LINK_DM01 connect 'DAMENG' with DM identified by dm12345678 using '192.168.1.223/5236';

create public link LINK_DM02 connect 'DAMENG' with SYSDBA identified by SYSDBA using 'DMSERVER02';

方式二:无需开启MAL重启数据库(通过dpi方式)

create or replace public link LINK_DPI connect 'DPI' with SYSDBA identified by SYSDBA using '192.168.1.223:5236';

达梦8-Oracle的dblink访问

1.在达梦用户dmdba下安装Oracle客户端,并配置环境变量如下(红色字体需要重点关注)

vi .bash_profile

export ORACLE_BASE=/home/dmdba/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1

export DM_HOME="/home/dmdba/dmdbms"

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin:$ORACLE_HOME/bin"

export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin:$ORACLE_HOME/bin

stty erase ^H

2.配置tnsnames.ora

ORCL =

 (DESCRIPTION =

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

   (CONNECT_DATA =

    (SERVER = DEDICATED)

    (SERVICE_NAME = orcl)

    )

  )

3.测试连通性:tnsping orcl

 结果显示OK通过

4.重启达梦数据库(不重启lib的文件不生效)

5.disql登录达梦数据库disql,创建dblink

create public link LINK_DM01 connect 'ORACLE' with ECLOUD identified by 123456 using '192.168.1.244/ORCL';

Oracle到达梦8的dblink访问

ODBC下载地址http://www.unixodbc.org/

环境:

达梦8数据库192.168.1.223

Oracle11.2.0.4.0数据库192.168.1.245

操作系统版本:redhat 6.8

以下内容均在oracle操作

1.安装unixODBC(root用户)

tar -xvf unixODBC-2.3.0.tar.gz

cd unixODBC-2.3.0/

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

make

make install

odbcinst -j

配置odbc.ini参数文件

vi /etc/odbc.ini

[dm8]

Description = DM ODBC DSN

Driver = DM8 ODBC DRIVER

SERVER = 192.168.1.223  #达梦数据库地址

UID = SYSDBA        #数据库访问用户

PWD = SYSDBA      #数据库密码

TCP_PORT = 5236  #数据库端口

配置odbcinst.ini参数文件

vi /etc/odbcinst.ini

[DM8 ODBC DRIVER]

Description = ODBC DIRVER FOR DM8

DRIVER = $DM_HOME/bin/libdodbc.so #填写实际全路径

注意:

(1)在oracle服务器如果仅需要按照达梦的客户端和驱动即可。

(2)达梦的libdodbc.so文件,oracle需要去访问达梦的lib库文件,Oracle自己的Lib库文件,以及ODBC的lib库文件。

在oracle的/home/oracle/.bash_profile中增加达梦bin目录的路径以及ODBC的lib库路径,如下红色标注

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib64:$DM_HOME/bin

以上配置完毕后,测试下ODBC效果:

2.创建透明网关的配置文件,路径$ORACLE_HOME/hs/admin,名称已init+SID.ora命名

vi $ORACLE_HOME/hs/admin/initdm8.ora

HS_FDS_CONNECT_INFO=dm8 #配置的tns名称

HS_FDS_TRACE_LEVEL = debug  #开启debug可以获取输出日志,生产环境调试后off关闭

HS_FDS_SHAREABLE_NAME=/usr/lib/libodbc.so #写ODBC的libodbc.so库文件还是达梦的libdodbc.so均可不用纠结

HS_LANGUAGE="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

HS_NLS_NCHAR=UCS2

set ODBCINI=/etc/odbc.ini

3.监听文件配置listener.ora

vi $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(PROGRAM = dg4odbc)  #无需修改Oracle的协议名称

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = dm8)  #配置的连接实例名称

(ENV="LD_LIBRARY_PATH=$unix_ODBC/lib:$DM_HOME/bin:$ORACLE_HOME/lib")#此行可加可不加,如果系统的lib设置无问题,可以忽略,系统LIB设置无法访问ODBC的LIB库就需要单独添加,ODBC,ORACLE,DM三个产品的LIB库路径缺一不可。

)

(SID_DESC =

(GLOBAL_DBNAME = orcl1) #本地数据库服务名称

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = orcl1)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.245)(PORT = 1521)) #Oracle本地实例的地址和端口

)

(DESCRIPTION =

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

)

)

ADR_BASE_LISTENER = /u01/app/oracle

停止监听:lsnrctl stop

启动监听:lsnrctl start

不能重启就重新加载监听: lsnrctl reload

4.配置tnsnames.ora

vi $ORACLE_HOME/network/admin/tnsnames.ora

dm8 =

(DESCRIPTION=

(ADDRESS=

(PROTOCOL=TCP) (HOST=localhost) (PORT=1521)

)

(CONNECT_DATA=(SID=dm8))

(HS=OK)

)

注意:host,port均是填写本地Oracle的,HS=OK表示异构

测试:tnsping dm8 返回结果OK

5.disql登录Oracle数据库创建dblink

create public database link DMLINK connect to "SYSDBA" identified by "SYSDBA" USING 'DM8';

6.查询已创建dblink

set pages 200 lines 200

col db_link for a15

col OWNER for a20

col host for a20

col USERNAME for a20

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

select * from dba_db_links;

7.测试link查询

select * from v$version@dmlink;

在线服务平台地址:

https://eco.dameng.com

 

### 配置达梦数据库中的DBLink以连接至Oracle #### 使用OCI接口配置DBLink 为了使达梦数据库能够通过DBLink访问Oracle数据库,推荐采用Oracle OCI(Oracle Call Interface)方式进行配置[^3]。 - **下载并安装Oracle客户端驱动** Oracle Instant Client 是实现这一目标所必需的组件之一。可以从指定网站获取适用于操作系统的最新版本Instant Client包,并按照说明完成安装过程。 - **创建监听器** 在Oracle端需建立一个监听程序来接收来自达梦数据库发出的数据请求。这通常涉及到编辑`listener.ora`文件以及启动监听服务[^5]。 - **修改tnsnames.ora文件** 此文件用于定义网络服务名与实际数据库实例之间的映射关系,在其中添加针对目标Oracle数据库的服务条目是必要的步骤之一。 ```bash # Example entry in tnsnames.ora file ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host_ip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl_service_name) ) ) ``` - **在达梦侧执行SQL命令创建DBLink对象** 完成上述准备工作之后,可以在达梦环境中利用如下语句构建指向远程Oracle数据库链接: ```sql CREATE DATABASE LINK dblink_oracle CONNECT TO username IDENTIFIED BY password USING 'orcl'; ``` 此处`username`, `password`代表具有适当权限的Oracle账户凭证;而`'orcl'`则是之前于`tnsnames.ora`内设定好的网络服务名称[^4]。 --- #### ODBC方式配置DBLink 对于某些特定场景下可能更倾向于使用ODBC作为中间件来进行跨平台间通信,则可考虑基于此协议实施相应设置。 - **注册ODBC数据源** 参照相关文档指导,在操作系统层面建立起名为DM_TO_ORA_DSN的新DSN资源,确保其参数正确无误地指向待接入的目标Oracle服务器实例[^1]。 - **编写连接字符串** 构建适配当前环境变量条件下的完整连接串表达式,该字符串将被用来初始化后续所有经由本路径发起的操作指令集。 ```sql CREATE DATABASE LINK dblink_odbc CONNECT TO "SCHEMA" IDENTIFIED BY "PASSWORD" USING '(DESCRIPTION=(DRIVER={Microsoft ODBC for Oracle};SERVER=//oracle_server:port/service_name))' ``` 请注意替换掉模板里的占位符部分(`SCHEMA`,`PASSWORD`)为真实的值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值