KingbaseES dblink异常unsupported for database link
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。
具体原因:
数据库kingbase.conf配置文件shared_preload_libraries 没有添加kdb_database_link扩展插件。
创建kdb_database_link扩展插件后,在当前的连接可以使用dblink查询数据。主要是由于创建kdb_database_link扩展插件后扩展调用的kdb_database_link共享库文件在当前连接进程里面有加载。
退出或者建立新的连接后,新开的连接进程里面未加载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的更多相关文章
- database link远程链接数据库
--授权创建.删除dblink GRANT CREATE [PUBLIC] DATABASE LINK,DROP [PUBLIC] DATABASE LINK TO canco; --查看数据库GLO ...
- 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 ...
- Oracle创建database link(dblink)和同义词(synonym)
同一个数据库不同用户之间建立dblink和synonym 1.建立dblink 实现在A用户下通过dblink访问B用户下的数据库表,需要在A用户下创建访问B库的dblink连接 --创建远程连接db ...
- 建立dblink(database link)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/bisal/article/details/26730993 database linke是建立一个数 ...
- Oracle DATABASE LINK(DBLINK)创建
数据库全局名称可以用以下命令查出: SELECT * FROM GLOBAL_NAME; 修改可以用以下语句来修改参数值: ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALS ...
- Oracle数据库如何创建DATABASE LINK?
Oracle数据库如何创建DATABASE LINK? 2011-08-09 14:54 taowei20061122 CSDN博客 http://blog.csdn.net/taowei20061 ...
- oracle 创建database Link
当两台不同的数据库服务器想要共享一部分数据的时候,可以通过创建database Link的方式实现. 创建全局database links ,则必须使用systm或sys用户,在database前加p ...
- DATABASE LINK 的查看、创建与删除
1.查看dblink SELECT OWNER,OBJECT_NAME FROM DBA_OBJECTS WHERE OBJECT_TYPE='DATABASE LINK'; 或者 SELECT * ...
- oracle Database Link
1 Database Link 的创建: 有两个数据库服务器A/B, 其中A的IP地址为172.20.36.245, 服务器B为本机.服务器B上的数据库实例名为ORCL,在本机上的服务监听配置上有服务 ...
- Oracle database link中查询会开启事务吗?
关于oracle database link,使用database link相关的查询语句是否会开启事务呢?我们知道,在数据库中一个简单的SELECT查询语句不会产生事务(select for upd ...
随机推荐
- .NET7 gRPC JSON转码+OpenAPI
gRPC JSON转码 gRPC JSON 转码允许浏览器应用调用 gRPC 服务,就像它们是使用 JSON 的 RESTful API 一样. 浏览器应用不需要生成 gRPC 客户端或了解 gRPC ...
- 常用Python库整理
记录工作和学习中遇到和使用过的Python库. Target 四个Level 整理 Collect 学习 Learn 练习 Practice 掌握 Master 1. Python原生和功能增强 1. ...
- cookie中 防止重复存值 (可用于历史记录等)
function makeCookie($key,$val){ // 查看cookie中是否已经存过键为history_ids if(Cookie::has($key)){ // 已经存过了 $jso ...
- Web安全Day1 - SQL注入、漏洞类型
Web安全Day1 - SQL注入.漏洞类型 1. SQL注入 1.1 漏洞简介 1.2 漏洞原理 1.3 漏洞危害 2. SQL漏洞类型 2.1 区分数字和字符串 2.2 内联SQL注入 2.3 报 ...
- 18道经典链表题刷题总结——WeetCode1 链表系列
系列文章目录和关于我 前言: WeetCode = Week leetCode 寓意每周刷点leetCode 题目 链表是我恢复刷题手感最喜欢做的系列,其没用太多的算法思想,单纯考验对指针的理解,和c ...
- C温故补缺(十):输入输出
输入输出 printf()和scanf() 用来格式化输入输出,它们都是有返回值的 int printf()返回输出的内容的长度 #include<stdio.h> int main(){ ...
- [Kogel.Subscribe.Mssql]SQL Server增量订阅,数据库变更监听
此框架是SQL Server增量订阅,用来监听增删改数据库数据变更 目前仅支持SQL Server,Nuget上可以下载安装 或者使用Nuget命令添加包 dotnet add package Kog ...
- Google地图瓦片
1.Web墨卡托空间参考 1.1.什么是Web墨卡托 墨卡托投影,又称正轴等角圆柱投影,由荷兰地图学家墨卡托(G.Mercator)于1569年创拟.假设地球被套在一个圆柱中,赤道与圆柱相切,然后在地 ...
- 【Day04】Spring Cloud 升华篇:容器化技术docker和kurbernetes
一.介绍 1.要考虑的问题 微服务数量有很多 中间件的部署-nacos-server sentinel-server 如何部署多个服务和中间件? 2.存在问题---机器上直接解压使用 资源利用率的问题 ...
- ChatGPT 会开源吗?
最近,我被一款叫做 ChatGPT 的人工智能(AI)聊天机器人,刷屏了.网上有人说它是搜索引擎杀手,还有人说它将取代程序员... 最后,我还是没扛住铺天盖地的赞美,跑去注册了个账号,抱着调侃&quo ...