Oracle通过DBLINK访问达梦数据库

news2025/1/12 23:02:13

环境需求

需要安装配置以下相关软件:

1、Oracle Gateways

2、ODBC数据源(gateway机器)

3、达梦数据库软件(gateway机器)

安装配置

Windows环境

安装达梦数据库软件

安装步骤省略,可以参考DM 数据库快速上手指南 | 达梦技术文档 (dameng.com)

Windows ODBC数据源配置

配置ODBC数据源名称为DM8DSN (后面gateway的initxxx.ora文件要用到)

image-20211123114321371

image-20211123114433393

安装Oracle Gateways

安装比较简单,安装组件选择ODBC

image-20211123105026831

由于Oracle gateways与数据库服务器安装在同一台机器,所以本次这里就不再进行监听创建(也可以创建),可以在配置好gateway相关配置文件后,在现有的Oracle数据库监听文件中添加gateway的监听。如果gateway与Oracle数据库服务器不在同一台,则这里需要创建gateway的监听。

image-20211123105308575

配置Oracle Gateways

进入到Gateway HOME目录下,本次安装的gateway home目录为C:\app\LW\gateways\11.2.0\tg_1。

主要配置文件目录在HOME目录下的hs/admin目录下:

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> ls


    目录: C:\app\LW\gateways\11.2.0\tg_1\hs\admin


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2013/10/9     13:29           1147 extproc.ora
-a----         2013/10/9     13:29            327 initdg4odbc.ora
-a----        2021/11/23     10:51            420 listener.ora.sample
-a----        2021/11/23     10:51            253 tnsnames.ora.sample

主要配置文件和模板文件内容如下:

1、initdg4odbc.ora(主要配置文件)

注意:文件名init后面接的是实例名,在监听文件中添加gateway监听信息时指定的SID_NAME

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> cat .\initdg4odbc.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = <odbc data_source_name>
HS_FDS_TRACE_LEVEL = <trace_level>


#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>

2、Gateway监听配置模板文件,在Oracle数据库服务器上已有创建监听的情况下,将SID_DESC那块内容复制到Oracle监听文件的SID_LIST下。

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> cat .\listener.ora.sample
# This is a sample listener.ora that contains the NET8 parameters that are
# needed to connect to an HS Agent

LISTENER =
 (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
 )

SID_LIST_LISTENER=
  (SID_LIST=
      (SID_DESC=
         (SID_NAME=dg4odbc)
         (ORACLE_HOME=C:\app\LW\gateways\11.2.0\tg_1)
         (PROGRAM=dg4odbc)
      )
  )

#CONNECT_TIMEOUT_LISTENER = 0

3、tnsnames.ora配置模板文件,可以将文件中的内容添加到Oracle服务器的tnsnames.ora文件中

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> CAT .\tnsnames.ora.sample
# This is a sample tnsnames.ora that contains the NET8 parameters that are
# needed to connect to an HS Agent

dg4odbc  =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
    (CONNECT_DATA=(SID=dg4odbc))
    (HS=OK)
  )
配置gateway initdg4dm8.ora文件

本次这里采用的是非默认的文件,复制initdg4odbc.ora文件并重命名为initdg4dm8.ora,配置内容如下:

PS C:\app\LW\gateways\11.2.0\tg_1\hs\admin> cat .\initdg4dm8.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC

#
# HS init parameters
#
HS_FDS_CONNECT_INFO = DM8DSN   ----配置的ODBC数据源名称
HS_FDS_TRACE_LEVEL = OFF       ----调试排错的时候可以开启trace


#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>
配置listener.ora监听文件

本次是直接在Oracle数据库服务器上安装的gateway,直接在现有数据库监听配置文件中添加gateway监听信息。

本机ORACLE_HOME为:C:\app\LW\product\11.2.0\dbhome_1

本机Oracle数据库监听配置文件路径:ORACLE_HOME/network/admin,

添加内容如下:

PS C:\app\LW\product\11.2.0\dbhome_1\NETWORK\ADMIN> cat .\listener.ora
# listener.ora Network Configuration File: C:\app\LW\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\LW\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\LW\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
      (SID_DESC=
         (SID_NAME=dg4dm8)      ---SID_NAME对应gateway参数配置文件后面的名称init+SID_NAME.ora
         (ORACLE_HOME=C:\app\LW\gateways\11.2.0\tg_1)
         (PROGRAM=dg4odbc)      ---这里表示配置的是ODBC网关
      )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = LeeWen)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = C:\app\LW

然后,重启Oracle数据库监听。监听正常重启后,可以看到监听中已注册dg4dm8.

image-20211123120638863

配置tnsnames.ora文件

在ORACLE_HOME/network/admin/tnsnames.ora文件中添加如下内容:

dg4dm8  =
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=LeeWen)(PORT=1521))
    (CONNECT_DATA=(SID=dg4dm8))
    (HS=OK)        ---这里表示连接的是异构数据库
  ) 

添加内容可以从之前Gateway安装后的模板文件中拷贝然后修改,内容中的SID与监听中配置的SID要相同,网络服务名可以自定义。

Oracle 数据库中创建DBLINK

达梦数据库用户为LINK_USER,密码为123456789

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create public database link LINK_DM8 connect to LINK_USER identified by "123456789" using 'dg4dm8';

数据库链接已创建。

SQL> select * from test@link_dm8;

BANNER
--------------------------------------------------------------------------------
ID_CODE
--------------------------------------------------------------------------------
DM Database Server 64 V8
1-2-70-21.09.24-147898-10028-ENT  Pack2

DB Version: 0x7000c
1-2-70-21.09.24-147898-10028-ENT  Pack2

创建成功,可以正常访问达梦数据库。

Linux环境

Linux环境上的达梦数据库软件安装以及Oracle Gateways安装配置,与Windows环境没有太大区别。

Linux环境上配置达梦数据库ODBC源可以参考达梦DBLINK之DM访问Oracle配置步骤 | 达梦技术社区 (dameng.com) 中的ODBC数据源配置。

简单测试总结

1、insert into 远程数据库表 select * from本地表

Oracle端不支持,报错:ORA-02025: SQL 语句的所有表均必须在远程数据库中

image-20211123143154842

2、insert into 本地表 select * from 远程数据库表

支持,但是需要注意本地表字段类型与远程数据库表字段类型匹配。

image-20211123143535303

同样,create table 本地表 as select * from 远程数据库表;也是可以正常执行。

image-20211123144340114

3、触发器

在触发器中使用DBLINK访问表也存在一些限制。

更多资讯请上达梦技术社区了解:https://eco.dameng.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【嵌入式Linux开发一路清障-连载02】Ubuntu22.04安装Shutter进行截图和标注

Ubuntu22.04安装Shutter进行截图和标注障碍 05&#xff0d;Ubuntu22.04中不会给截图做标注&#xff0c;写Bolg举步维艰命令行方式安装Shuttershutter中的常用命令为截取活动窗口设置快捷键安装gnome-web-photo截取长图--失败--未完待续小结下节预告障碍 05&#xff0d;Ubuntu22…

一起来部署项目-采购一台云服务器

前言 不会运维的程序员不是一个好程序员&#xff0c;你是这样认为吗&#xff1f;不&#xff0c;不重要&#xff0c;关键是很多小企业是让后端程序员去干运维的&#xff0c;省钱~~~o(╥﹏╥)o。特别是在YQ严重的当下&#xff0c;所以为了提高自己的竞争力&#xff0c;从今天起&…

万字爽文一篇带你掌握Java8新特性

陈老老老板说明&#xff1a;新的专栏&#xff0c;本专栏专门讲Java8新特性&#xff0c;把平时遇到的问题与Java8的写法进行总结&#xff0c;需要注意的地方都标红了&#xff0c;一起加油。本文是介绍Java8新特性与常用方法&#xff08;此篇只做大体介绍了解&#xff0c;之后会把…

Java8中LocalDate详解Date线程不安全的原因

LocalDate 分类分工 java.time.LocalDate ->只对年月日做出处理 java.time.LocalTime ->只对时分秒纳秒做出处理 java.time.LocalDateTime ->同时可以处理年月日和时分秒优点 除了使用起来更加简单和灵活&#xff0c;主要是传统的时期处理类Date、Calendar不是多线…

刷爆leetcode第十二期 0026 数组中数字出现的次数

编号0026 数组中数字出现的次数 一个整型数组 nums 里除两个数字之外&#xff0c;其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)&#xff0c;空间复杂度是O(1)。 题目示例如下 这里其实是一道我一个月之前做的题目 在学弟的博客里刚好看…

【数据结构与算法】Java实现七大排序算法汇总

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【数据结构与算法】 ✈️✈️本篇内容: Java实现七大排序算法汇总&#xff01; &#x1f680;&#x1f680;由于本篇博客涉及代码较多&#xff0c;博主把代码都提…

刷爆leetcode第十一期 0023~0025

刷爆leetcode第十一期 编号0023 相同的树编号0024 对称二叉树编号0025 另一个树的子树编号0023 相同的树 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是…

多旋翼无人机仿真 rotors_simulator:用键盘控制无人机飞行

多旋翼无人机仿真 rotors_simulator&#xff1a;用键盘控制无人机飞行前言书接上文接口测试键盘指令发布指令转换与发布修改 rotors_simulator 的控制接口节点测试前言 RotorS 是一个MAV gazebo 仿真系统。 提供了几种多旋翼仿真模型&#xff0c;例如 AscTec HummingbirdAsc…

PHP反序列化

序列化与反序列化 序列化 反序列是指把对象转换为字符串的过程&#xff0c;便于在内存、文件、数据库中保存、传输&#xff0c;PHP中使用serialize函数进行序列化。 <?phpclass Person{public $name"php";protected $id;private $age;}$a new Person();$a_se…

全排列笔记

14天阅读挑战赛 全排列 题目 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 解答 方法一&#xff1a;回溯 思路 从高中的数学知识我们可以知道 从[1,2,3…

如何在Linux上优雅地写代码-Linux生存指南

初入Linux&#xff0c;发现老是要面对一个命令行&#xff0c;大黑框&#xff0c;看不懂各种手册&#xff0c;写代码也是用vi/vim&#xff0c;难受的捉急。其实Linux下的各种工具&#xff0c;强大得超出你的想象&#xff0c;如果你初入Linux&#xff0c;那么你急需阅读这篇文章&…

操作系统的主要功能

目录 一. 处理机管理功能 1.1 进程控制 1.2 进程同步 1.3 进程通信 1.4 进程调度 二. 存储器管理功能 2.1 内存分配 2.2 内存保护 2.3 地址映射 2.4 内存扩充 三. 设备管理功能 3.1 缓冲管理 3.2 设备分配 3.3 设备处理 3.4 设备独立性和虚拟设备 四…

关于Python爬虫兼职,这里有一条高效路径

前言 昨天&#xff0c;一位00后前来报喜&#xff0c;也表达感谢。 他说&#xff0c;当初刚毕业啥也不会也找不到工作&#xff0c;最后听了我的&#xff0c;边学爬虫边做兼职项目&#xff0c;积极主动求职投简历&#xff0c;既可以兼职获得收益&#xff0c;也能积累项目经验谋求…

Linux:以K、M、G查看文件大小;

简介&#xff1a;灵活多变的查看文件的大小 历史攻略&#xff1a; Linux&#xff1a;sudo免密 python&#xff1a;执行dos命令、Linux命令 案例源码&#xff1a; # 以适当方式显示文件大小&#xff1a; ls -lh# 以byte显示文件大小&#xff1a; ls -l# 以M显示文件大小&am…

NR PUSCH(五) DMRS

微信同步更新欢迎关注同名modem协议笔记 PUSCH DMRS和PDSCH DMRS内容基本一样&#xff0c;但也有不同的地方&#xff0c;例如PUSCH 可能需要Transform precoding&#xff0c;port 对应0~11(DMRS configured type2)等等。先简单看看Transformprecoding的相关内容&#xff0c;Tr…

Excel数据分析实战之开宗明义: Excel与数据分析实战

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结…

军用大数据 - Spark机器学习

文章目录第1关&#xff1a;Iris 分类任务描述相关知识1&#xff1a;观察数据集2&#xff1a;RFormula 特征提取3&#xff1a;pandas 的 concat 函数编程要求代码实现————————————————————————————————————————第2关&#xff1a;图片识…

网络原理 --- 传输层Ⅲ TCP协议中的滑动窗口,流量控制和拥塞控制

文章目录网络原理传输层TCP协议4.滑动窗口5.流量控制6.拥塞控制总结网络原理 介绍TCP/IP协议中每一层里面的核心内容~ 应用层传输层网络层数据链路层物理层 传输层TCP协议 4.滑动窗口 TCP能够保证可靠传输,但是失去了效率! 但是TCP希望能够在保证可靠性的前提下,尽可能地提…

达梦数据库在不修改SQL的情况下为SQL指定HINT

前言 在Oracle中可以使用outline、SQL PROFILE等手段去在无需修改SQL语句的情况下&#xff0c;来保证SQL执行计划在不同硬件环境下相同&#xff0c;从而保证SQL语句在不同环境的执行效率。那么&#xff0c;在达梦数据库中则可以使用SF_INJECT_HINT系统函数达到类似的效果。 SF…

Java学习笔记 --- 异常

一、基本介绍 Java语言中&#xff0c;将程序执行中发生的不正常情况称为“异常”。&#xff08;开发过程中的语法错误和逻辑错误不是异常&#xff09; 执行过程中所发生的异常事件可以分为两类 1、Error&#xff08;错误&#xff09;&#xff1a;Java虚拟机无法解决的严重问…