GaussDB dblink相关总结

举报
simmon 发表于 2025/08/02 14:43:27 2025/08/02
【摘要】 1.功能描述在本地数据库利用DATABASE LINK与远程数据库建立连接,并通过DATABASE LINK对远程数据库进行访问。DATABASE LINK可以分为public或private,private DATABASE LINK仅能被创建者访问,而当DATABASE LINK为public时则所有用户都能访问。所有已创建的DATABASE LINK信息都存在本地数据库的系统视图gs...

1.功能描述

在本地数据库利用DATABASE LINK与远程数据库建立连接,并通过DATABASE LINK对远程数据库进行访问。

DATABASE LINK可以分为public或private,private DATABASE LINK仅能被创建者访问,而当DATABASE LINK为public时则所有用户都能访问。

所有已创建的DATABASE LINK信息都存在本地数据库的系统视图gs_db_links中。

dblink分为同构dblink和异构dblink,同构dblink是指GaussDB库与库之间或实例与实例之间的dblink;异构dblink是指GaussDB与Oracle等其他数据库间的dblink。不管是哪种dblink都不推荐客户商用,如果用也只建议用作查询。

2.注意事项

  • DATABASE LINK特性只能在A兼容版本下使用。
  • DATABASE LINK连接的远端数据库仅支持503.1.0及之后版本
  • 禁止使用DATABASE LINK连接初始用户。
  • 禁止初始用户创建、修改和删除DATABASE LINK对象。
  • 升级未提交情况下无法创建使用DATABASE LINK。
  • 当使用CURRENT_USER或CONNECT TO连接串省略时,使用当前数据库初始用户名和空密码连接,使用时会连接失败。
  • 连接GaussDB时使用localhost、127.0.0.1或本机ip及对应端口可连接当前实例数据库。
  • 用户需要保证本地和远端数据库的兼容性参数DBCOMPATIBILITY和guc参数behavior_compat_options、a_format_dev_version、a_format_version取值一致

3.语法格式

# 创建
CREATE [ PUBLIC ] DATABASE LINK dblink
  [ CONNECT TO { CURRENT_USER | 'user' IDENTIFIED BY 'password' } ] [ USING ( option 'value' [...]) ];

# 修改
ALTER [ PUBLIC ] DATABASE LINK dblink
  { CONNECT TO user IDENTIFIED BY password };

# 删除
DROP [ PUBLIC ] DATABASE LINK dblink;

4.参数说明

image.png

5.使用案例

创建dblink以支持跨库访问,比如在db1中创建dblink来访问db2中的对象。

# 创建dblink
hcie=> CREATE PUBLIC DATABASE LINK dblink_kunjian CONNECT TO 'root' IDENTIFIED BY 'Gauss_123' USING (HOST '192.168.31.122', PORT '8000', DBNAME 'kunjian'); 
CREATE DATABASE LINK

# 使用dblink
hcie=> SELECT * FROM test@dblink_kunjian;
 id |    a    
----+---------
  1 | wang
  2 | sdfgag
  3 | abc/def
  4 | def\abc
  5 | www%abc
(5 rows)
hcie=> SELECT count(*) from hcie.lineitem@dblink_kunjian;
  count  
---------
 1048576
(1 row)

# 查看dblink
hcie=> SELECT * from gs_db_links;
 dblinkid |     dlname     | dlowner | dlownername |                    options                     | useroptions | heterogeneous | protocol | opencursors | intransaction | updatasent 
----------+----------------+---------+-------------+------------------------------------------------+-------------+---------------+----------+-------------+---------------+------------
    46240 | dblink_kunjian |       0 | public      | {host=192.168.31.122,port=8000,dbname=kunjian} | user=root   |               |          |             | f             | f
(1 row)

6.关于异构dblink

异构dblink是指其他类型数据库与GaussDB之间的dblink,用的比较多的是Oracle与GaussDB之间的dblink,Oracle可通过odbc连接到GaussDB,确保odbc要调通。经验证,麒麟V10操作系统下的Oracle可创建dblink连接到GaussDB,并能执行增删改查dml语句,无法执行DDL语句,注意点:GaussDB表列名默认为小写,查询需要加引号。

在GaussDB新版本中,一般也支持创建dblink连接到Oracle,经与研发老师确认,GaussDB POC版本确定支持异构dblink,商用版本可在产品文档中确认下。
image.png

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。