GaussDB dblink相关总结
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.参数说明
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,商用版本可在产品文档中确认下。
- 点赞
- 收藏
- 关注作者
评论(0)