KingbaseES使用dblink查询报错:unsupported for database link

适用于:

KingbaseES所有版本。

问题现象:

KingbaseES创建kingbase_fdw、kdb_database_link扩展插件并创建dblink连接后,在当前的连接使用刚创建的dblink连接可以正常查询数据。关闭或退出当前连接后,新的连接使用dblink查询报错ERROR: Unsupported for database link。

kdb_database_link 是 KingbaseES 为了兼容oracle 语法而开发的跨数据库访问扩展,用于访问KingbaseES, Postgresql , Oracle 。

kdb_database_link 实际是在kingbase_fdw上层进行了包装,创建kdb_database_link同时需要kingbase_fdw。

具体原因:

  1. 数据库kingbase.conf配置文件shared_preload_libraries 没有添加kdb_database_link扩展插件。

  2. 创建kdb_database_link扩展插件后,在当前的连接可以使用dblink查询数据。主要是由于创建kdb_database_link扩展插件后扩展调用的kdb_database_link共享库文件在当前连接进程里面有加载。

  3. 退出或者建立新的连接后,新开的连接进程里面未加载kdb_database_link扩展插件,使用dblink查询就会报错。

# 通过pmap pid可以看到kdb_database_link.so共享库文件在当前的连接进程有加载
$ pmap 847
847: kingbase: system test [local] idle
0000000000400000 9216K r-x-- kingbase
0000000000eff000 108K rw--- kingbase
0000000000f1a000 328K rw--- [ anon ]
0000000001816000 1400K rw--- [ anon ]
0000000001974000 1140K rw--- [ anon ]
00007fc83ca61000 100K r-x-- kingbase_fdw.so
00007fc83ca7a000 2048K ----- kingbase_fdw.so
00007fc83cc7a000 4K rw--- kingbase_fdw.so
00007fc83cc7b000 48K r-x-- kdb_database_link.so
00007fc83cc87000 2044K ----- kdb_database_link.so
00007fc83ce86000 4K rw--- kdb_database_link.so # 退出连接后,新连接pmap信息里面无kdb_database_link.so共享库文件
# 由于信息太多这里不展示,感兴趣可以根据复现用例,进行观察。

解决方法:

在数据库kingbase.conf配置文件shared_preload_libraries添加 kdb_database_link扩展。

# 示例
shared_preload_libraries = 'kdb_database_link,...'

问题复现:

1.创建kdb_database_link扩展插件

create extension kingbase_fdw;
create extension kdb_database_link;

2.创建dblink连接

#	DriverName :      连接驱动名称(同kingbase用户家目录下.odbc.ini文件里面名称保持一致)
# Host : 远程数据库网络地址
# Port : 远程数据库服务端口
# Dbname : 远程数据库名称
# DbType : 远程数据库类型
# DbType : 支持Oracle,KingbaseES,Postgres三种数据库类型 # 语法格式 test=# \help create database link
Command: CREATE DATABASE LINK
Description: define a new database link
Syntax:
CREATE [ PUBLIC ] DATABASE LINK dblink CONNECT TO user IDENTIFIED BY
'password' USING { connect_string | config_tag } # 示例 create public database link link30 connect to 'system' identified by 'system' using(DriverName='KingbaseES V8R6 ODBC Driver',Host='192.168.57.30',Port=54321,Dbname='test',Dbtype='kingbase');

3.使用创建的dblink查询数据

# 创建kdb_database_link扩展插件、创建dblink连接后不退出连接,直接使用创建的dblink查询

test=# select * from emp@link30;
id | name
----+------
2 | name
3 | name
(2 行记录)

4.退出当前连接或者新开连接

test=# \q
[kingbase@postgres ~]$ ksql -Usystem -dtest
ksql (V8.0)
输入 "help" 来获取帮助信息. test=# select * from emp@link31;
ERROR: Unsupported for database link. # 完成问题复现

KingbaseES dblink异常unsupported for database link的更多相关文章

  1. database link远程链接数据库

    --授权创建.删除dblink GRANT CREATE [PUBLIC] DATABASE LINK,DROP [PUBLIC] DATABASE LINK TO canco; --查看数据库GLO ...

  2. Script: Who’s using a database link?(找出谁在使用dblink)

    Every once in awhile it is useful to find out which sessions are using a database link in an Oracle ...

  3. Oracle创建database link(dblink)和同义词(synonym)

    同一个数据库不同用户之间建立dblink和synonym 1.建立dblink 实现在A用户下通过dblink访问B用户下的数据库表,需要在A用户下创建访问B库的dblink连接 --创建远程连接db ...

  4. 建立dblink(database link)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/bisal/article/details/26730993 database linke是建立一个数 ...

  5. Oracle DATABASE LINK(DBLINK)创建

    数据库全局名称可以用以下命令查出: SELECT * FROM GLOBAL_NAME; 修改可以用以下语句来修改参数值: ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALS ...

  6. Oracle数据库如何创建DATABASE LINK?

    Oracle数据库如何创建DATABASE LINK? 2011-08-09 14:54 taowei20061122 CSDN博客  http://blog.csdn.net/taowei20061 ...

  7. oracle 创建database Link

    当两台不同的数据库服务器想要共享一部分数据的时候,可以通过创建database Link的方式实现. 创建全局database links ,则必须使用systm或sys用户,在database前加p ...

  8. DATABASE LINK 的查看、创建与删除

    1.查看dblink SELECT OWNER,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='DATABASE LINK'; 或者 SELECT * ...

  9. oracle Database Link

    1 Database Link 的创建: 有两个数据库服务器A/B, 其中A的IP地址为172.20.36.245, 服务器B为本机.服务器B上的数据库实例名为ORCL,在本机上的服务监听配置上有服务 ...

  10. Oracle database link中查询会开启事务吗?

    关于oracle database link,使用database link相关的查询语句是否会开启事务呢?我们知道,在数据库中一个简单的SELECT查询语句不会产生事务(select for upd ...

随机推荐

  1. AR Engine光照估计能力,让虚拟物体在现实世界更具真实感

    AR是一项现实增强技术,即在视觉层面上实现虚拟物体和现实世界的深度融合,打造沉浸式AR交互体验.而想要增强虚拟物体与现实世界的融合效果,光照估计则是关键能力之一. 人们所看到的世界外观,都是由光和物质 ...

  2. 某厂面试:如何优雅使用 SPI 机制

    代码不多,文章可能有点长.朋友面试某厂问到的 SPI 机制,联想到自己项目最近写到的 SPI 场景,文章简要描述下 SPI 机制的发展历程 产出背景 因为最近项目中使用分库分表以及数据加密使用到了 S ...

  3. <二>自己实现简单的string

    我们结合运算符重载知识实现string 类 在自己实现的String类中可以参考C++中string的方法 例如构造,加法,大小比较,长度,[] 等操作. 当前的MyString 类中,暂时不加入迭代 ...

  4. 解决"VLC 无法打开 MRL「screen://」。详情请检查日志" 问题

    问题描述 vlc 抓取桌面视频报这个错误 解决 sudo apt-get install vlc-plugin-access-extra 其他 不一定每次都在图形化界面调用,也可以直接在终端输入 vl ...

  5. 【每日一题】【DFS&每个点都调用一次前后左右】由1连接的岛屿数量-211031/220216

    给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成. 此外,你可以假设该网格的四条边 ...

  6. http 缓存 笔记

    http 缓存,有时候静态资源没更新的情况下,不需要每次都去服务器获取,减少资源的请求. Http 报文中与缓存相关的首部字段 1. 通用首部字段(就是请求报文和响应报文都能用上的字段) 2. 请求首 ...

  7. 用openpyxl创建工作簿和工作表

    import osimport openpyxl #设置默认路径os.chdir(r'D:/openpyxl/') #创建工作簿变量 wb = openpyxl.Workbook() #创建工作表变量 ...

  8. SQL注入问题、视图、触发器、事物、存储过程、函数、流程控制、索引相关概念、索引数据结构、慢查询优化、

    目录 SQL注入问题 视图 触发器 事物 存储过程 函数 流程控制 索引相关概念 索引数据结构 慢查询优化 测试装备 联合索引 全文检索 插入数据 更新数据 删除数据 主键 外键 重命名表 事物 安全 ...

  9. adb环境配置及常用命令

    一.adb环境配置 1.下载并安装adb驱动 2.下载adb工具platform-tools.rar,解压放在某个文件夹下 3.右击此电脑->属性->高级系统设置->环境变量-> ...

  10. MAUI新生4.6-主题设置LightTheme&DarkTheme

    通过主题设置,可以在运行时更改应用的主题外观,比如切换亮色主题和暗黑主题.主题设置并没有新的知识点,基本的原理如下: 定义每个应用主题的ResourceDictionary,每个ResourceDic ...