循序渐进丨MogDB 对 Oracle DBLink兼容性增强

本特性自 MogDB 5.0.0版本开始引入,支持 Oracle DBLink语法,可以使用@符号访问 Oracle 数据库中的表。

示  例

01

环境准备

9fc32f3a2dfdcbe39651a6565e656e46.png

MogDB 环境

dc2a51f311b390596b6686f05416deba.png

  • 已安装 MogDB 数据库。

  • 已安装oracle_fdw插件,具体安装方法参见oracle_fdw安装文档

    https://docs.mogdb.io/zh/mogdb/v5.0/1-oracle_fdw(复制链接至浏览器查阅)

08ef9afc9ee0d1b5a12a25ada7de5045.png

Oracle 环境

36155a6d18953cef603be9c6594fe288.png

创建测试表:

CREATE TABLE scott.EMPLOYEE (
ID INT PRIMARY KEY,
NAME VARCHAR2(50) NOT NULL,
SALARY NUMBER(10,2)
);

插入测试数据:

INSERT INTO scott.EMPLOYEE (ID, NAME, SALARY) VALUES (1001, 'Mike', 5000);
INSERT INTO scott.EMPLOYEE (ID, NAME, SALARY) VALUES (1002, 'JACK', 6000);

02

验证步骤

f9ce74b61d8e384cbb8ad50f00bdcaa8.png

① 登录 MogDB 数据库

63f7d11d2b614ddd152494dcc9e8ab37.png

以数据库postgres,端口号26000为例:

[omm@master01 ~]$ gsql -d postgres -p 26000 -r
gsql ((MogDB 5.0.4 build 070c88a0) compiled at 2023-11-25 12:57:09 commit 0 last mr 1804 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.


MogDB=#

c6cf3cb00fdc26651d4124f27ef707fc.png

② 创建用户

7ca7e73a5e9aed75a1ccecd1bd17a235.png

赋予用户sysadmin权限,以用户名test为例:

MogDB=# create user test identified by 'Enmo@123';
NOTICE:  The encrypted password contains MD5 ciphertext, which is not secure.
CREATE ROLE
MogDB=# alter user test sysadmin;
ALTER ROLE

ae8ca55c3bcf619f04d4e2dc85c751fe.png

③ 用户创建用户映射密钥文件

c3e66c896c9323c0da16b2cd88c2f7f5.png

[omm@master01**粗体** oracle_file]$ gs_guc generate -S 'xxxx@123' -D $GAUSSHOME/bin -o usermapping -U test
The gs_guc run with the following arguments: [gs_guc -S ******** -D /data/mogdb500/app/bin -o usermapping -U test generate ].
gs_guc generate -S *** -U ***

-S 表示自定义密钥,例如xxxx@123

44929f01f1a0625a05002afcd1f5dee4.png

④ 以test用户登录 MogDB 数据库

30a518271c01fd9c52f8891d9e916548.png

[omm@master01 ~]$ gsql -d postgres -p 26000 -r -U test -W 'Enmo@123'
gsql ((MogDB 5.0.4 build 070c88a0) compiled at 2023-11-25 12:57:09 commit 0 last mr 1804 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help


MogDB=>

f5011d1a2fe571745039bae82dffce64.png

⑤ 创建 MogDB 数据库到 Oracle 数据库的DBLink连接

6498bc67282eac6354d04aeb68a20cb1.png

以IP地址10.211.55.21,端口号1521,数据库名orcl为例:

MogDB=> CREATE SERVER dblink_to_orcl FOREIGN DATA WRAPPER oracle_fdw OPTIONS(dbserver '10.211.55.21:1521/orcl');
CREATE SERVER

94cc85023008103abea2037a1ae8743a.png

⑥ 创建用户映射

b9f61c4bc8114a9e9b7e1966e6c4958c.png

为 MogDB 数据库用户test和 Oracle 数据库用户scott建立映射关系:

MogDB=> create user mapping for test server dblink_to_orcl options(user 'scott',password 'xxx123');
CREATE USER MAPPING

00400ba3e194c60a8ac0646b315b0059.png

⑦ 通过DBLink在 MogDB 数据库中查询 Oracle 表

d3988fb8587aefe8213045e66d44e961.png

MogDB=> SELECT * FROM scott.EMPLOYEE@dblink_to_orcl;
  id  | name | salary
------+------+---------
 1001 | Mike | 5000.00
 1002 | JACK | 6000.00
(2 rows)


MogDB=> SELECT * FROM scott.EMPLOYEE@dblink_to_orcl WHERE SALARY > 400;
  id  | name | salary
------+------+---------
 1001 | Mike | 5000.00
 1002 | JACK | 6000.00
(2 rows)

b13eaf594c39ba73f6305b7dbefffe72.png

⑧ 通过DBLink操作数据

34963a63fc673edb27cc80d3d99c8995.png

在 MogDB 数据库中对 Oracle 数据库表执行更新、插入、删除、查询操作:

MogDB=> UPDATE scott.EMPLOYEE@dblink_to_orcl SET SALARY = 5500 WHERE ID = 1001;
UPDATE 1


MogDB=> insert into scott.EMPLOYEE@dblink_to_orcl values (1003, 'JANE', 7000);
INSERT 0 1


MogDB=> DELETE FROM scott.EMPLOYEE@dblink_to_orcl WHERE SALARY =6000;
DELETE 1


MogDB=> select * from scott.EMPLOYEE@dblink_to_orcl;
  id  | name | salary
------+------+---------
 1003 | JANE | 7000.00
 1001 | MIKE | 5500.00
(2 rows)

2515cd10b149192aadaa2d759d7821a4.png

⑨ 查看执行计划

dc4eab883d88bf77c63da2c2cda3b330.png

MogDB=> explain select * from scott.EMPLOYEE@dblink_to_orcl;
                                                    QUERY PLAN


-----------------------------------------------------------------------------------------------
-------------------
 Foreign Scan on "scott.employee@dblink_to_orcl" employee  (cost=10000.00..20000.00 r
ows=1000 width=78)
   Oracle query: SELECT /*66abc20a4a7895b75898e391381f9de8*/ r1."ID",r1."NAME",r1."SALARY" FROM
 scott.employee r1
(2 rows)

关于作者

许玉晨,云和恩墨 MogDB 技术支持工程师,有超过10年的金融、保险、政府、地税、运营商等业务关键型系统的运维经验,曾担任公司异常恢复东区接口人,负责紧急异常恢复工作,目前负责 MogDB 数据库的技术推广工作。

a96809cb1906efea09b2700afdf80761.gif

数据驱动,成就未来,云和恩墨,不负所托!


云和恩墨:智能的数据技术提供商,创立于2011年,总部位于中国北京,在国内外35个地区设有本地办公室并开展业务。

我们以“数据驱动,成就未来”为使命,致力于将创新的数据技术产品和解决方案带给全球的企业和组织,帮助客户构建起安全、高效、敏捷且经济的数据环境,并增强客户在数据洞察和决策上的竞争优势,实现数据驱动的业务创新和升级发展。

自成立以来,我们始终专注于数据技术领域,根据不断变化的市场需求和技术进步,创新研发了系列软件产品,涵盖数据库、数据库存储、数据库云化管理和数据智能分析等领域。这些产品已经在集团型、大中型、高成长型客户以及行业云场景中得到广泛应用,证明了我们的技术和商业竞争力,展现了我们在数据技术端到端解决方案方面的优势。

在云化、数字化和智能化的时代背景下,我们始终以正和多赢为目标,感恩每一位客户和合作伙伴的信任与支持,“利他先行”,坚持长期投入于数据技术核心能力的理念,为构建智能的数字世界而不懈努力。

158b98453f8ae3c62d9257c16d845870.gif

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[Linux_IMX6ULL驱动开发]-基础驱动

驱动的含义 如何理解嵌入式的驱动呢,我个人认为,驱动就是嵌入式上层应用操控底层硬件的桥梁。因为上层应用是在用户态,是无法直接操控底层的硬件的。我们需要利用系统调用(open、read、write等),进入内核态…

好看又好用,这 10 个宝藏 App 免费拿走不谢!

目录 1. 综合AI工具箱——HuluAI 2. 文本视频生成工具——Jujilu 3.翻译软件 —— TTime 4.专业录屏和直播软件 —— OBS Studio 5.开源跨平台轻量计时软件 —— wnr 6.开源跨平台绘图 —— Drawio 7.开源三维建模动画渲染 —— Blender 8.跨平台的多功能软件 —— Pear…

小满CRM怎么样,多少外贸公司在用?

我们在20年用过小满CRM,产品很明显是围绕着外贸业务场景设计的,功能很多,但价格相对来说也算贵的了,看了其他用户的使用感受发现小满的数据安全和服务器方面可能也有点问题。 我们最后选择了零代码平台自主搭建了一个CRM系统&…

4.Python数据分析—数据分析入门知识图谱索引(知识体系下篇)

4.Python数据分析—数据分析入门知识图谱&索引-知识体系下篇 一个人简介二机器学习基础2.1 监督学习与无监督学习2.1.1 监督学习:2.1.2 无监督学习: 2.2 特征工程2.3 常用机器学习算法概述2.3.1 监督学习算法:2.3.2 无监督学习算法&#…

拿下阿里面试:揭秘JVM对象引用的奥秘!

如有疑问或者更多的技术分享,欢迎关注我的微信公众号“知其然亦知其所以然”! 大家好,我是小米!今天我要和大家一起探讨的是JVM中的对象引用,这也是阿里巴巴面试中经常被问到的热门话题哦!在Java开发中,我们经常需要管理对象的引用,了解不同类型的引用对于优化内存、避…

【一】TensorFlow神经网络模型构建之神经元函数及优化方法

TensorFlow神经网络模型构建主要涉及如下几块:神经元函数、卷积函数、池化函数、分类函数、优化方法。下面分别对这几块进行展开说明: 神经元函数及优化方法 神经网络之所以能解决非线性问题(如语音、图像识别等),本…

web学习笔记(四十七)

目录 1. node.js中的三个全局变量 1.1 global 1.2 __dirname 文件夹的绝对路径 1.3 __filename 文件名的绝对路径 2.模块化 2.1 什么是模块化 2.2 模块化的好处 3. Node.js 中模块化 3.1 Node.js 中的模块化规范 4. Node.js 中的模块作用域 4.1module 对象 4.2 mod…

自定义你的商店 – 设计WooCommerce商店的新方法

WooCommerce 8.8即将推出,带来了一种无需代码即可创建精美商店的新方法。向“自定义你的商店”问好,这是一项全新功能,将取代“个性化你的商店”入门步骤。 自定义你的商店将利用最新的WordPress站点编辑工具以及酷炫的新Pattern Assembler …

深兰科技陈海波:生成式AI,新一轮知识生产力革命

3月26日,AIoT创新技术赋能工业数字化高峰论坛在上海市宝山区临港南大数智中心隆重举行。活动吸引了诸多行业内的专家学者、企业家及金融投资机构、政府园区、用户等多位业界精英出席,共同探讨该领域面临的挑战与机遇,分享最新的科研成果和技术…

【信号处理】基于DGGAN的单通道脑电信号增强和情绪检测(tensorflow)

关于 情绪检测,是脑科学研究中的一个常见和热门的方向。在进行情绪检测的分类中,真实数据不足,经常导致情绪检测模型的性能不佳。因此,对数据进行增强,成为了一个提升下游任务的重要的手段。本项目通过DCGAN模型实现脑…

【动手学深度学习】深入浅出深度学习之线性神经网络

目录 🌞一、实验目的 🌞二、实验准备 🌞三、实验内容 🌼1. 线性回归 🌻1.1 矢量化加速 🌻1.2 正态分布与平方损失 🌼2. 线性回归的从零开始实现 🌻2.1. 生成数据集 &#x…

泛微表单添加自定义按钮

页面效果&#xff1a; 点击按钮&#xff0c;将参数字段对应的值传入链接中。 表单配置如下&#xff1a; 然后插入js代码块&#xff0c;代码如下&#xff1a; <script> jQuery(document).ready(function(){ //在表单的按钮单元格插入自定义属性&#xff1a;ID&#xff1…

三级等保建设技术方案-Word

1信息系统详细设计方案 1.1安全建设需求分析 1.1.1网络结构安全 1.1.2边界安全风险与需求分析 1.1.3运维风险需求分析 1.1.4关键服务器管理风险分析 1.1.5关键服务器用户操作管理风险分析 1.1.6数据库敏感数据运维风险分析 1.1.7“人机”运维操作行为风险综合分析 1.2…

云能耗管理系统在某高校建筑系统平台的开发与应用

摘要&#xff1a;依据本项目依托某学院的电能计量管理系统、给水计量监管系统以及供热计量管理系统等基础平台&#xff0c;制订了高等学校建筑能耗综合管理系统平台应用的总体框架和方案&#xff0c;该系统可以对校园建筑的各种用能情况进行实时监测、统计能耗、进行能效分析&a…

DVWA-CSRF通关教程-完结

DVWA-CSRF通关教程-完结 文章目录 DVWA-CSRF通关教程-完结Low页面使用源码分析漏洞利用 Medium源码分析漏洞利用 High源码分析漏洞利用 impossible源码分析 Low 页面使用 当前页面上&#xff0c;是一个修改admin密码的页面&#xff0c;只需要输入新密码和重复新密码&#xff…

全局UI方法-弹窗三-文本滑动选择器弹窗(TextPickDialog)

1、描述 根据指定的选择范围创建文本选择器&#xff0c;展示在弹窗上。 2、接口 TextPickDialog(options?: TextPickDialogOptions) 3、TextPickDialogOptions 参数名称 参数类型 必填 参数描述 rang string[] | Resource 是 设置文本选择器的选择范围。 selected nu…

聚酰亚胺PI材料难于粘接,用什么胶水粘接?那么让我们先一步步的从认识它开始(十一): 聚酰亚胺PI纤维

聚酰亚胺PI纤维 聚酰亚胺PI纤维是由聚酰亚胺制成的纤维材料&#xff0c;是一种非常高性能的工程纤维材料。它具有极强的耐温性、耐化学性、耐热性和耐磨性等特点。具体来说&#xff0c;聚酰亚胺PI纤维的耐温性能非常突出&#xff0c;可以承受高达300℃以上的高温条件而不流失或…

热爱负压自动排渣放水器向光而行

你还很年轻&#xff0c;将来你会遇到很多人&#xff0c; 经历很多事&#xff0c;得到很多&#xff0c;也会失去很多&#xff0c; 但无论如何有两样东西&#xff0c;你绝不能丢弃&#xff0c; 一个叫良心&#xff0c;另一个叫理想。 热爱负压自动排渣放水器向光而行 一、概述 【…

目标检测+车道线识别+追踪

一种方法&#xff1a; 车道线检测-canny边缘检测-霍夫变换 一、什么是霍夫变换 霍夫变换&#xff08;Hough Transform&#xff09;是一种在图像处理和计算机视觉中广泛使用的特征检测技术&#xff0c;主要用于识别图像中的几何形状&#xff0c;尤其是直线、圆和椭圆等常见形状…

[密码学] 密码学基础

目录 一 为什么要加密? 二 常见的密码算法 三 密钥 四 密码学常识 五 密码信息威胁 六 凯撒密码 一 为什么要加密? 在互联网的通信中&#xff0c;数据是通过很多计算机或者通信设备相互转发&#xff0c;才能够到达目的地,所以在这个转发的过程中&#xff0c;如果通信包…