暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓 DB2联邦查询访问KingbaseES

数据猿 2023-08-11
347

DB2联邦查询访问KingbaseES

DB2 11.5提供了odbc库来对pg/oracle等数据库进行联邦查询,对于KingbaseES数据库也是如此。

关键字:

KingbaseES、异构数据库、DB2、联邦查询

版本说明

KES:V8R6,端口5033,数据库模式oracle,不区分大小写

注:可在initdb的时候添加参数–enable-ci来创建一个不区分大小写的数据库,数据库创建完毕后,可输入以下命令查询:

show enable_ci;

如下图所示:

image.png

enable_ci = on -> 表示数据库不区分大小写

DB2:V11.5,linux开发者版本

联邦查询

DB2针对联邦查询,提供了一套ODBC库,该库用于配置ODBC数据源对远程数据库的访问,可支持PG/ORACLE等数据库。
由于KES兼容PG的通信协议,所以可以使用DB2提供的pg相关的odbc驱动来连接KingbaseES,完成远程数据库的查询。
检查"/opt/ibm/db2/V11.5/federation/odbc/lib/"路径是否有对应odbc驱动,若没有,则需要安装db2客户端来获取对应odbc库。

db2 安装路径

DB2 实例安装路径: /home/db2inst1

DB2 odbc库路径: /opt/ibm/db2/V11.5/federation/odbc/lib

安装DB2客户端

1>切换到安装包解压路径下:

cd /xxx/server_dev

2>执行客户端安装:

./db2_install

安装可能会报错,但只要"/opt/ibm/db2/V11.5/federation/odbc/lib/"有对应odbc库就行,如下图所示:

后面的操作需要切换到db2inst1用户下操作。

db2 联邦配置项开启

1查看federated的配置项:

db2 get dbm cfg | grep -i federated

2更新federated为yes:

db2 update dbm cfg using federated yes

设置完成后,再次查询如下图所示:

image.png

3重启数据库:

db2stop force

db2start

db2 联邦查询配置

1 db2 连接到上文创建的数据库:

db2 connect to testDB2

2 进入db2命令行:

db2

image.png

3 创建SERVER:

【注意】
因DB2提供了pg的odbc驱动来进行联邦查询,所以可直接使用db2预置的wrapper来创建远程服务器的server,即创建远端服务器server的时候可不用创建并指定wrapper。

使用DSN:

  1. 修改db2dj.ini(该配置文件存放在实例目录下):

打开db2dj.ini:

vi /home/db2inst1/sqllib/cfg/db2dj.ini

添加odbc.ini的文件路径(该配置文件需要自己提供,可将下文的模板拷贝到指定目录):

ODBCINI=/home/db2inst1/odbc.ini

修改后文件如下图所示:

image.png

2)修改odbc.ini

odbc.ini 添加 [Kingbase_V8] 节点:

[Kingbase_V8]

Driver = /opt/ibm/db2/V11.5/federation/odbc/lib/FOpsql27.so # 驱动路径

HostName = 10.10.12.252 # 远端数据库IP

PortNumber = 5033 # 端口

Database = test # 数据库名

EnableDescribeParam = 1 # linux for system z 系统需启动该配置项

odbc.ini 需要自己提供,以下是已配置好[Kingbase_V8]的odbc.ini的模板:

【注意】

各行不能有空格等额外的字符,否则会出现无法识别的情况,上文文本框各行后的空格及字符只是注释说明,使用时需要删除。

3)创建远程服务器的server并映射到本地

(1)注册ODBC数据库源的server:

create server serverKES type postgresql options(node ‘Kingbase_V8’);

(2)创建远程到ODBC数据源的用户映射:

create user mapping for user server serverKES options (REMOTE_AUTHID ‘system’, REMOTE_PASSWORD ‘123456’);

不使用DSN:

1)创建远程服务器的server并映射到本地

(1)注册ODBC数据库源的server:

create server serverKES_NoDSN type postgresql options(host ‘10.10.12.252’, port ‘5033’, dbname ‘test’);

(2)创建远程到ODBC数据源的用户映射:

create user mapping for user server serverKES_NoDSN options (REMOTE_AUTHID ‘system’, REMOTE_PASSWORD ‘123456’);

【注意】
使用时需注意符号的全角半角。

连接测试

1.打开传递会话的数据源:

set passthru serverKES;

2.新建查询测试:

select * from tab;

3.关闭当前会话:

set passthru reset

如下图所示:

image.png

注:
SET PASSTHRU -> 可将当前配置的ODBC数据源的SQL提交到该数据源的会话,开启后,只会去查询建立连接的远端数据库。
以下是db2和kes同名数据库开启SET PASSTHRU的测试,如下图所示:

image.png

由上图所示,开启后可以直接去远端KingbaseES数据库查询tab表。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

暂无图片
获得了26次点赞
暂无图片
内容获得14次评论
暂无图片
获得了94次收藏