循序渐进丨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 helpMogDB=>

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.001002 | JACK | 6000.00
(2 rows)MogDB=> SELECT * FROM scott.EMPLOYEE@dblink_to_orcl WHERE SALARY > 400;id  | name | salary
------+------+---------1001 | Mike | 5000.001002 | 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 1MogDB=> insert into scott.EMPLOYEE@dblink_to_orcl values (1003, 'JANE', 7000);
INSERT 0 1MogDB=> DELETE FROM scott.EMPLOYEE@dblink_to_orcl WHERE SALARY =6000;
DELETE 1MogDB=> select * from scott.EMPLOYEE@dblink_to_orcl;id  | name | salary
------+------+---------1003 | JANE | 7000.001001 | 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" FROMscott.employee r1
(2 rows)

关于作者

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

a96809cb1906efea09b2700afdf80761.gif

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


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

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

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

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

158b98453f8ae3c62d9257c16d845870.gif

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【博弈论3——二人博弈的纳什均衡】

1.俾斯麦海之战 2. 零和博弈的定义 零和博弈(Zero-Sum Game)是一种博弈论的基本概念,指的是在博弈过程中,博弈参与者之间的收益和损失之和总是一个常数,特别是总和为零。即博弈一方的收益必然等于另一方的损失&#x…

软考 - 系统架构设计师 - 关系模型的完整性规则

前言 关系模型的完整性规则是一组用于确保关系数据库中数据的完整性和一致性的规则。这些规则定义了在关系数据库中如何存储、更新和查询数据,以保证数据的准确性和一致性。 详情 关系模型的完整性规则主要包括以下三类: 实体完整性规则 这是确保每个…

【3D目标检测】Det3d—SE-SSD模型训练(前篇):KITTI数据集训练

SE-SSD模型训练 1 基于Det3d搭建SE-SSD环境2 自定义数据准备2.1 自定义数据集标注2.2 训练数据生成2.3 数据集分割 3 训练KITTI数据集3.1 数据准备3.2 配置修改3.3 模型训练 1 基于Det3d搭建SE-SSD环境 Det3D环境搭建参考:【3D目标检测】环境搭建(OpenP…

企业交换组网之VLAN

1. 企业内网有哪些安全隐患? 2. VLAN如何进行业务隔离?二层VLAN交换 3. 思科华为双厂商VLAN部署区别; --- VLAN - 虚拟局域网 --- 虚拟局域网:通过交换机连接的网络 - 把终端连接在一起 实现内网互通 共享文件夹&#xf…

GIMP - GNU 图像处理程序 - 中文版

GIMP - GNU 图像处理程序 - 中文版 1. Edit -> Preferences -> Interface2. Chinese [zh_CN]3. 重启 GIMP 即可References 1. Edit -> Preferences -> Interface 2. Chinese [zh_CN] 3. 重启 GIMP 即可 References [1] Yongqiang Cheng, https://yongqiang.blog.…

HTML块级元素和内联元素(头部和布局)

目录 1.HTML块级和内联标签: 1.块级元素: 2.内联元素: 3.元素嵌套: 4.元素转换: 示例如下: 2.内联框架: 前言: 示例如下: 3.布局: 4.头部标签: 前言: 说明&…

「MySQL」索引事务

🎇个人主页:Ice_Sugar_7 🎇所属专栏:数据库 🎇欢迎点赞收藏加关注哦! 索引&事务 🍉索引🍌特点🍌通过 SQL 操作索引🍌底层数据结构 🍉事务&…

芒果YOLOv8改进130:Neck篇,即插即用,CCFM重构跨尺度特征融合模块,构建CCFM模块,助力小目标检测涨点

芒果专栏 基于 CCFM 的改进结构,改进源码教程 | 详情如下🥇 💡本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 即插即用 结构。博客 包括改进所需的 核心结构代码 文件 YOLOv8改进专栏完整目录链接:👉 芒果YOLOv8深度改进教程 | 🔥 订阅一个…

微服务(基础篇-006-Docker安装-CentOS7)

目录 05-初识Docker-Docker的安装_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p46&spm_id_frompageDriver&vd_source60a35a11f813c6dff0b76089e5e138cc 0.安装Docker 1.CentOS安装Docker 1.1.卸载(可选) 1.2.安装dock…

UE5启用SteamOSS流程

一、安装OnlineSubsystemSteam插件 1、在UE里安装OnlineSubsystemSteam 2、设置默认开始地图 3、设置DefaultEngine.ini文件: 打开项目根目录/Config/DefaultEngine.ini文件 打开官网的配置说明 复制并粘贴到该文件中 4、设置运行模式 5、测试 确保Steam平台已…

electron打包桌面版.exe之vue项目踩坑(vue3+electron 解决打包后首页打开空白,打包后路由不跳转及请求不到后端数据等问题)

vue项目https://www.qingplus.cn/components-web/index打包桌面版问题集合 一、静态资源加载问题 npm run electron_dev桌面版运行后页面空白,内容未加载。 填坑: 打包配置要用相对路径 vite.config.ts文件中的base要改成./,之前加了项目…

postcss安装和使用(详细)

1,安装postcss: 在此之前需要安装有node.js 第一步 命令:cnpm install postcss-cli -g 第二步 命令:cnpm install postcss –g 推荐内容 2,下载autoprefixer插件,并创建postcss.config.js文件并写入配置代码 autoprefixer插件…

习题2-5 求平方根序列前N项和

本题要求编写程序,计算平方根序列 的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根。 输入格式: 输入在一行中给出一个正整数N。 输出格式: 在一行中按照“sum S”的格式输出部分和的值S,精确到小数点后两位。题目保证计算结果不…

西南交大swjtu算法实验3.3|穷举法

1.实验目的 通过具体例子学习排列这种典型的穷举算法的求解过程以及程序框架,分析其算法的求解过程,以及如何设计穷举法解决实际问题。通过本实验,理解穷举法的特点以及实际应用中的局限性。 2.实验任务 有n (n>1)个任务需要…

HarmonyOS 应用开发之FA模型与Stage模型应用组件

应用配置文件概述(FA模型) 每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向编译工具、操作系统和应用市场提供描述应用的基本信息。 应用配置文件需申明以下内容: 应用的软件Bundle名称,应用的开发…

使用Python实现对word的批量操作

Python在平时写写小工具真是方便快捷,Pyhon大法好。以下所有代码都是找了好多网上的大佬分享的代码按照自己的需求改的。 调用的库为Python-docx、win32com、PyPDF2、xlwings(操作excel)。 因为公司的任务要对上千个word文件进行批量操作&a…

JAVAEE之网络编程

1.网络编程 网络编程,指网络上的主机,通过不同的进程,以编程的方式实现网络通信(或称为网络数据传输)。 当然,我们只要满足进程不同就行; 所以即便是同一个主机,只要是不同进程&am…

【论文阅读】ELA: Efficient Local Attention for Deep Convolutional Neural Networks

(ELA)Efficient Local Attention for Deep Convolutional Neural Networks 论文链接:ELA: Efficient Local Attention for Deep Convolutional Neural Networks (arxiv.org) 作者:Wei Xu, Yi Wan 单位:兰州大学信息…

C语言-文件操作

🌈很高兴可以来阅读我的博客!🌟我热衷于分享🖊学习经验,🏫多彩生活,精彩足球赛事⚽🔗我的CSDN: Kevin ’ s blog📂专栏收录:C预言 1. 文件的作用 …

基于spark的大数据分析预测地震受灾情况的系统设计

基于spark的大数据分析预测地震受灾情况的系统设计 在本篇博客中,我们将介绍如何使用Apache Spark框架进行地震受灾情况的预测。我们将结合数据分析、特征工程、模型训练和评估等步骤,最终建立一个预测模型来预测地震造成的破坏程度,同时使用可视化大屏的方式展示数据的分布…