南大通用GBase 8c dblink功能使用介绍

23 阅读3分钟

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

Gbase 8c 提供类似 Oracle 的 dblink 功能需要分布式集群版本 GBase8cV5 3.0.3B16 以上和主备集群 gbase8cV5 S5.0.0B24 以上版本使用。

1、创建 dblink 远程连接需要创建用户密钥文件,该步骤可以忽略:

gs_ssh -c "gs_guc generate -S 'db1x@123' -D $GAUSSHOME/bin -o usermapping"
  • 其中-S 表示自定义密钥,可将 password 替换为自定义密钥;
  • 创建之后建议就不要做改动了,如果已经创建了 dblink 之后,再使用改语句重新创建密钥文件,会导致已创建的 dblink 失效无法使用;
  • 如果是单个节点的话,也可以直接执行:gs_guc generate -S 'password' -D $GAUSSHOME/bin -o usermapping
    图片 1.png

2、创建用户和库:

create user test with sysadmin createrole auditadmin poladmin password 'gbase;123';
create database tdb with template = template0 owner = test encoding = 'UTF-8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' dbcompatibility = 'A';

-- 连接 Oracle 时,如果本地数据库的编码格式 Oracle 不支持的话,会报 warning,建议使用 utf-8 编码格式,否则可能出现数据无法识别的问题(目前有问题的编码格式有:SQL_ASCII、LATIN10、WIN874、MULE_INTERNAL)。
图片 2.png

3、登录和连接需要使用 dblink 的数据库,创建 dblink 插件:

  • create extension oracle_fdw; --创建使用 Oracle 的 dblink 插件
  • create extension postgres_fdw; --创建使用 gbase 8c 的 dblink 插件

插件安装命令执行成功后,可以通过\dx 检查插件安装信息,确保对应插件已经安装成功,具体执行可参见下图所示:
图片 3.png

用户授权:

4、使用 dblink 的用户需要使用 postgres_fdw / oracle_fdw 的权限,可使用如下语句:

grant usage on foreign data wrapper postgres_fdw to test;
grant usage on foreign data wrapper oracle_fdw to test;

图片 4.png

5、创建连接 Oracle 的 dblink,需要提前准备好 Oracle 的连接信息:

图片 5.png

-- 其中 public 可以忽略,oracle_fdw 是在连接 Oracle 时必须要带的,host、port 代表 ip 和端口,service_name 表示 Oracle 远程数据库的实例名。

-- 创建 dblink 连接后需要等待约 10 秒,需要拉取远程表结构信息。

使用 dblink:
图片 6.png

6、创建 gbase 8c 的 dblink:

图片 7.png

-- 连接 Oracle 目前只支持查询创建连接的用户的 schema 下面的表,暂不支持查询别的 schema 下的表;

-- 目前在连接 Oracle 数据库时,如果要使用的表没有主键,执行 update、delete 操作会失败;

-- 连接 gbase8c 如果不指定 schema 名,会默认使用用户同名的 schema,要查询别的 schema,需要指定,如下:

select * from schema1.t2@link_name;

7、删除 dblink:

图片 8.png

如果远程数据库的表结构发生变化或者新建表,由于 dblink 基于外部表功能实现,需要有要查询的表的结构才可以正常查询,否则会出现问题,目前提供两种给解决方案:

a.使用 sync_dblink_schema('dblink_name')函数同步一下本地存储的外部表结构,使用示例:“select * from sync_dblink_schema('link_name');”

b.设置参数 whale.auto_sync_dblink 为 true,可以在远程数据库发生表结构变化时自动同步表结构信息,由于设置这个参数后,每次操作表都会查询表的结构信息,会有性能损耗,不建议打开改参数,连接 Oracle 时暂不支持打开该参数。

当同步表结构信息时,如果表结构发生变化,会重建本地的外部表,会报一些提示信息,忽略即可,除非是 error 级别信息。

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。