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

DB2联邦查询访问KingbaseES

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

关键字:

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

版本说明

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

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

show enable_ci;

如下图所示:

file

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

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

file

3重启数据库:

db2stop force

db2start

db2 联邦查询配置

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

db2 connect to testDB2

2 进入db2命令行:

db2

file

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

修改后文件如下图所示:

file

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');

如下图所示:

![file](https://img-blog.csdnimg.cn/e0e8f0acf90a415ca480cd5bfdae4f5f.png)

不使用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’);

如下图所示:

![file](https://img-blog.csdnimg.cn/cfcdd212f8444617babee2596a1dd677.png)

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

连接测试

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

set passthru serverKES;

2.新建查询测试:

select * from tab;

3.关闭当前会话:

set passthru reset

如下图所示:

file

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

file

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

更多信息,参见https://help.kingbase.com.cn/v8/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值