news 2026/2/11 2:32:32

技术时刻丨GaussDB使用DBLINK连接到Oracle

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
技术时刻丨GaussDB使用DBLINK连接到Oracle

GaussDB 自内核506版本(2025年4 月30日发布)起,支持通过 DBLINK 功能连接至 Oracle 数据库,相关配置及使用说明如下。(官方文档参考链接:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-cent/gaussdb-42-0811.html)

安装

使用 DBLINK 连接 Oracle 前,需先在实例机器上部署 Oracle 客户端。这里提供两种部署方案,我推荐优先选择纯白屏化操作的 TPOPS 平台方案:

方案一

手动部署(不推荐)

手动将 instantclient 压缩包上传至每个数据节点,解压后配置 LD_LIBRARY_PATH 环境变量。该方案无官方完整操作步骤支撑,易出现配置疏漏,不建议采用。(官方文档参考链接:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-cent/gaussdb-42-0813.html)

方案二

TPOPS 平台插件化部署(推荐)

通过云数据库 GaussDB 管理平台(TPOPS)上传并安装插件,全程无需 SSH 登录服务器,操作流程如下:

<上传插件包>

https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/usermanual/qlh_02_0431.html

<插件安装>

https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/usermanual/qlh_02_0426.html

需要注意的是,TPOPS 这个版本仅支持以下表格中的 instantclient 版本上传,并且需要保证填写的 cksum 和 Oracle 官方页面上保持一致,但由于 Oracle 官方下载页面只会保留最新的版本,因此就算通过某种方式得到了原本的官方包,也没有官方页面可以获得 cksum 值了,只能通过 GaussDB 文档里来获取这些版本的 cksum 值。

系统架构

OCI插件包名

cksum

SHA 256

url

X86

instantclient-basic-linux.x64-12.2.0.1.0.zip

3923339140

5015e3c9fba84e009f7519893f798a1622c37d1ae2c55104ff502c52a0fe5194

https://download.oracle.com/otn/linux/instantclient/122010/instantclient-basic-linux.x64-12.2.0.1.0.zip(这个版本下载需要登录ORACLE账号,或者使用迅雷下载)

instantclient-basic-linux.x64-19.26.0.0.0dbru.zip

3459128350

f5f5f7e8eb8e1f057a33a8b8f5aef096544535365dedd31324f5f411abab339e

https://download.oracle.com/otn_software/linux/instantclient/1926000/instantclient-basic-linux.x64-19.26.0.0.0dbru.zip

instantclient-basic-linux.x64-21.17.0.0.0dbru.zip

937263543

70e3a0107a4847e2644a97df5102065c9ca133db36d81b3f3429f6e3426ff10f

https://download.oracle.com/otn_software/linux/instantclient/2117000/instantclient-basic-linux.x64-21.17.0.0.0dbru.zip

ARM

instantclient-basic-linux.arm64-19.26.0.0.0dbru.zip

2071078872

f8bd362bde8834c458493c14a654c97f6a9f8d1dcbbb38e1b67f8d3102851964

https://download.oracle.com/otn_software/linux/instantclient/1926000/instantclient-basic-linux.arm64-19.26.0.0.0dbru.zip

安装原理解析

  1. 插件包上传后,instantclient 压缩包会存储至 TPOPS 服务器的 /opt/sftphome/sftpservice/package/plugin/OracleOCI/ 目录(SFTP 服务器专属目录);

  2. 执行插件安装时,各数据节点会从 SFTP 服务器下载压缩包,并存至 /home/Ruby/oci_proxy 目录解压;

  3. 解压后,系统会将 instantclient_19_26 目录内的文件移动至上级目录,删除原压缩包(可能残留 instantclient_19_26 空目录),且会自动重启实例以完成配置生效。

使用

安装完后,通过create database link语法即可创建连接到Oracle的DBLINK。如下,表示创建一个名为public_dblink_to_o的DBLINK,使用用户名hr密码hr123,连接到192.168.1.123:1521/pdb1,并且对象标识符大小写不敏感(不配置则默认敏感,比如查ORACLE的表要手动双引号大写,不加双引号或者小写会报错表不存在)。其中的OCI即表示使用OCI插件连接Oracle数据库,去掉OCI即表示连接GaussDB数据库。(其他连接参数详见官方文档:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-cent/gaussdb-42-0629.html)

CREATE PUBLIC DATABASE LINK public_dblink_to_o CONNECT TO 'hr' IDENTIFIED BY 'hr123' OCI USING (dbserver '192.168.1.123:1521/pdb1' ,case_insensitive 'on');

@的用法和Oracle一样,就不举例了。(使用限制详见官方文档:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-cent/gaussdb-42-0813.html)

这里只提3点重要的功能限制:

  1. 该版本的 DBLINK 只支持 delete/insert/update/select,不支持调用远端的函数和存储过程;

  2. 支持通过本地同义词访问远端的表、视图,但不支持远端为嵌套同义词,也不支持远端为一个 DBLINK 对象的同义词;

  3. 不支持操作远端的 clob/blob/long/long raw 类型。

DBLINK函数

新增了一批DBLINK的函数,主要涉及关闭DBLINK连接、查看DBLINK信息、DBLINK占用内存大小等。(详见官方文档:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/25.1.30/devg-cent/gaussdb-42-0500.html)

实现分析

  1. 内核新建了 gs_database_link 表,用于存储创建的 DBLINK 信息,该表内记录了 DBLINK 名称、DBLINK 所有者(为0表示public)、使用的 fdw(外部数据封装器)、创建者、连接及参数设置、用户名密码(密码是加密存储的)、权限;

  2. 新建了视图 sys."v$dblink",结构参考 Oracle 同名视图;

  3. 连接到 Oracle 的 DBLINK 的 fdw 用的是"12223 gs_ora_fdw";

  4. 原本的 pg_foreign_server 和 pg_user_mapping 里不会新增记录,可以理解为是存到了 gs_database_link 里;

  5. 第一次访问远端表的时候,会自动插入 pg_foreign_table,即创建了外部表,在 pg_class 和 pg_attribute 中可以查到该表,表名是大写的(暂没测是否与 case_insensitive 有关)。因此可以判断,该功能在备机上无法使用;

  6. 在 pg_namespace 中会创建一条用户名@dblink名称的记录,外部表的 namespace 对应这个记录,也就是说,实际上它创建了一个 schema(周边生态工具和运维脚本要注意了);

  7. 可以使用 select * from"用户名@dblink名称"."大写外部表名"的方式访问曾经通过 DBLINK 的@方式访问的表(注意要加双引号,而且文档里没有描述这种方法,不能保证后续版本这种方法是否会被禁用);

  8. 发送到远端的 SQL,每个表的查询都会加上一串8个字节的 hash 值注释,同一表被多次查询时,hash 值也不一样,并且所有表会自动加上别名,r1、r2…rn;

  9. 从 gs_ora_fdw.control 这个文件里看,里面的 comment 和 oracle_fdw 一样,都是 foreign data wrapper for Oracle access,但是没有找到对应的 so(疑似打包到了主程序里);

  10. gs_ora_fdw 极有可能是基于 oracle_fdw 改的,文档中的 oracle_fdw 还没有替换干净,不过 gs_ora_fdw 很多下推场景是 oracle_fdw 所不具备的,应该是做了不少优化。

王勇昱

云和恩墨高级技术顾问

拥有十余年PL/SQL设计开发经验,维护过数百套Oracle应用数据库。2021年起开始投入国产数据库建设,多次获得墨天轮SQL挑战赛奖项及墨力之星,获评CSDN领军人物,参与过多个数据库相关开源项目的开发。

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


云和恩墨创立于2011年,是业界领先的“智能的数据技术提供商”。公司以“数据驱动,成就未来”为使命,致力于将创新的数据技术产品和解决方案带给全球的企业和组织,帮助客户构建安全、高效、敏捷且经济的数据环境,持续增强客户在数据洞察和决策上的竞争优势,实现数据驱动的业务创新和升级发展。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/4 13:15:08

Z-Image-Turbo图像格式输出说明,目前仅支持PNG

Z-Image-Turbo图像格式输出说明&#xff0c;目前仅支持PNG 1. 概述与背景 阿里通义Z-Image-Turbo WebUI图像快速生成模型是由开发者“科哥”基于DiffSynth Studio框架进行二次开发的高性能AI图像生成工具。该模型在保持高质量输出的同时&#xff0c;显著提升了推理速度&#…

作者头像 李华
网站建设 2026/2/10 10:08:32

实测Qwen All-in-One:CPU环境下秒级响应的多任务AI体验

实测Qwen All-in-One&#xff1a;CPU环境下秒级响应的多任务AI体验 1. 方案简介 在边缘计算和资源受限场景中&#xff0c;如何以最小代价部署具备多任务能力的AI服务&#xff0c;是当前工程落地的一大挑战。传统方案往往依赖多个专用模型&#xff08;如BERT用于情感分析、LLM…

作者头像 李华
网站建设 2026/2/5 14:16:32

通义千问3-4B跨平台调用:云端REST API,全终端兼容

通义千问3-4B跨平台调用&#xff1a;云端REST API&#xff0c;全终端兼容 在开发跨平台应用时&#xff0c;你是否也遇到过这样的问题&#xff1f;Android端用一套SDK&#xff0c;iOS端又要重新适配&#xff0c;Web前端还得再写一遍接口逻辑。每次模型升级&#xff0c;三端同步…

作者头像 李华
网站建设 2026/2/8 17:52:00

实测DeepSeek-R1-Distill-Qwen-1.5B:1.5B参数跑出7B效果,手机也能用

实测DeepSeek-R1-Distill-Qwen-1.5B&#xff1a;1.5B参数跑出7B效果&#xff0c;手机也能用 1. 引言&#xff1a;小模型也能有大作为 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;在自然语言理解、代码生成和数学推理等任务中展现出惊人能力。然而&#xff0c;主…

作者头像 李华
网站建设 2026/2/5 3:51:49

语音识别新利器|利用SenseVoice Small镜像精准提取文字与情感

语音识别新利器&#xff5c;利用SenseVoice Small镜像精准提取文字与情感 1. 引言&#xff1a;智能语音理解的新范式 在人机交互日益频繁的今天&#xff0c;传统语音识别技术已无法满足复杂场景下的多维语义理解需求。用户不仅希望将语音转为文字&#xff0c;更期望系统能感知…

作者头像 李华