KDB_Database_Link 使用介绍
kdb_database_link 是 KingbaseES 为了兼容oracle 语法而开发的跨数据库访问扩展,可用于访问KingbaseES, Postgresql , Oracle 。以下分别介绍跨数据库访问KingbaseES 与Oracle 的配置过程。
注意:database link 支持DML 操作 是从V8R6C4B0021 版本开始的,对于两端都是KingbaseES 数据库的,只需要源端是V8R6C4B0021 版本,目标端版本无要求(但必须保证ODBC 版本能够连接)。
一、配置ODBC
1、安装
[root@dbhost02 etc]# yum install unixODBC.x86_64 [kb86@dbhost02 data86]$ isql --version
unixODBC 2.3.1 [kb86@dbhost02 data86]$ odbcinst -j
unixODBC 2.3.1
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /home/kingbase/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
如果设置了LD_LIBRARY_PATH环境变量,则实际生效的是/usr/local/etc/odbcinst.ini ,否则可能是 /etc/odbcinst.ini。
注意:由于不同版本之间存在差异,为了保证能读取正确的配置,强烈建议统一使用用户主目录下 .odbc.ini 文件。
2、配置
根据odbcinst -j 显示的路径,配置 odbcinst.ini 和 odbc.ini 文件。
odbcinst.ini 文件内容如下:
[root@dbhost03 etc]# cat /usr/local/etc/odbcinst.ini
# Example driver definitions # Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/psqlodbcw.so
Setup = /usr/lib/libodbcpsqlS.so
Driver64 = /usr/lib64/psqlodbcw.so
Setup64 = /usr/lib64/libodbcpsqlS.so
FileUsage = 1 # Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc5.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1 [KingbaseES V8R6 ODBC Driver]
Description = ODBC for KingbaseES
Driver = /opt/kb86/ES/V8/Interface/odbc/kdbodbcw.so
Debug = 1
CommLog = 1
odbc.ini 文件内容如下(可选配置,主要用于isql 验证):
[v8r6]
Description=KingbaseES
Driver=KingbaseES V8R6 ODBC Driver
Servername=localhost
Database=test02
Username=user02
Password=user02
Port=54321
3、isql 验证 (可选)
必须配置了 odbc.ini ,才能进行此步骤
[kb86@dbhost02 data86]$ isql v8r6
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+ SQL>
4、验证驱动
验证kingbase自带的驱动 kdbodbcw.so,确保没有"not found"
ldd /opt/kb86/ES/V8/Interface/odbc/kdbodbcw.so
二、连接kingbase
1、修改 shared_preload_libraries 参数
需将kdb_database_link 加入 shared_preload_libraries 中,注意 kdb_database_link 必须放在最后,因为,与其他项间有依赖关系。
2、创建扩展
kdb_database_link 实际是在kingbase_fdw上层进行了包装,需要kingbase_fdw扩展。以system用户连接,创建组件:
create extension kdb_database_link
create extension kingbase_fdw
kdb_database_link 扩展创建后,会生成 $KINGBASE_DATA/sys_database_link.conf文件,类似于oracle 的tnsnames.ora 文件,用于配置服务名,在创建database link时使用。模板内容如下:
#[oradb]
#dbtype=Oracle
#dbname=orcl
#DriverName="Oracle12C ODBC Driver"
#host=127.0.0.1
#port=1521 [svr42]
dbtype=Kingbase
dbname=test02
DriverName="KingbaseES V8R6 ODBC Driver"
host=192.168.237.42
port=54321 #[PostgreSQL]
#dbtype=Postgres
#dbname=postgres
#DriverName="PostgreSQL ODBC Driver"
#host=127.0.0.1
#port=5432
3、创建数据链
create public database link to_svr42 connect to 'user_remote' identified by 'user_remote' using ( DriverName = 'KingbaseES V8R6 ODBC Driver' , Host = '192.168.237.42' , Port = 54321 , Dbname = 'test' , Dbtype = 'kingbase') create public database link to_svr42 connect to 'user02' identified by 'user02' using 'svr42' --或者修改sys_database_link.conf,配置正确的连接串。
数据链创建完后,会在pg_foreign_server 和 pg_user_mappings 增加相关条目
test=# select * from pg_user_mappings;
umid | srvid | srvname | umuser | usename | umoptions
-------+-------+-----------------------------+--------+------------+-----------------------------------------
16535 | 16534 | dblink_server_to_svr42_2200 | 0 | public | {user=user_remote,password=user_remote}
(2 rows) test=# select * from pg_foreign_server;
oid | srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions
-------+-----------------------------+----------+--------+---------+------------+---------------------------------------+----------------------------------------------
16534 | dblink_server_to_svr42_2200 | 10 | 16495 | | | | {dbname=test,host=192.168.237.42,port=54321}
4、验证数据链
test=# select * from user02.t1@to_svr42;
id
----
(0 rows) test=# insert into user02.t1@to_svr42 values(1);
INSERT 0 1
test=# update user02.t1@to_svr42 set id=2;
UPDATE 1
test=# select * from user02.t1@to_svr42;
id
----
2
(1 row) test=# delete from user02.t1@to_svr42;
DELETE 1
5、删除数据链
drop database link public.to_svr42;
三、连接oracle
1、创建扩展
如果要通过database link 连接访问oracle数据库,除了kdb_database_link外,还需要 oracle_fdw 插件。
create extension oracle_fdw;
create extension kdb_database_link;
2、配置sys_database_link.conf
[oradb]
dbtype=Oracle
dbname=SOGG
DriverName="Oracle ODBC Driver"
host=192.168.237.41
port=1521
3、配置odbc
修改 /usr/local/etc/odbcinst.ini , 增加:
[Oracle ODBC Driver]
Description = ODBC for Oracle
Driver = /opt/kb86/ES/V8/Server/lib/libsqora.so.19.1
Note:具体配置ODBC 连接oracle 过程见:https://www.cnblogs.com/kingbase/p/14921071.html
4、创建database link
create public database link to_ora42 connect to 'USER02' identified by 'user02' using 'oradb' create public database link to_ora42 connect to 'USER02' identified by 'user02' using
( DriverName = 'Oracle ODBC Driver' , Host = '192.168.237.41' , Port = 1521 , Dbname = 'SOGG' , Dbtype = 'oracle')
数据链创建后,可以在 字典表sys_database_link 与 pg_foreign_server 看到相关信息。
5、验证数据访问
KDB_Database_Link 使用介绍的更多相关文章
- KingbaseES DBLink 扩展介绍
DBLink 扩展插件功能与 Kingbase_FDW 类似,用于远程访问KingbaseES 数据库.相比于Kingbase_FDW,DBLink 功能更强大,可以执行DML,还可以通过 begin ...
- CSS3 background-image背景图片相关介绍
这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- Windows Server 2012 NIC Teaming介绍及注意事项
Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...
- Linux下服务器端开发流程及相关工具介绍(C++)
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
- HTML DOM 介绍
本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...
- HTML 事件(一) 事件的介绍
本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ...
- HTML5 介绍
本篇主要介绍HTML5规范的内容和页面上的架构变动. 目录 1. HTML5介绍 1.1 介绍 1.2 内容 1.3 浏览器支持情况 2. 创建HTML5页面 2.1 <!DOCTYPE> ...
随机推荐
- 一条 SQL 语句是如何执行的
一条 SQL 语句是如何执行的 SQL查询语句 select * from user where ID=10; MySQL 的基本架构可以分为 Server 层和存储引擎两部分.Server 层又包含 ...
- ASP.NET MVC的核心-Controller(控制器)
"每一个请求都必须通过Controller处理,然而其中有些请求是不需要模型和视图的" MVC框架规定带Controller后缀的类称为所谓的"控制器",在xx ...
- 03 转换css元素的类别
03 转换css元素的类别 通过设置display属性 属性 作用 block 块级 inline 行内 inline-block 行内块级 接来下 就跟着小demo来学习吧! 不懂可以看看!!!什么 ...
- 零基础学Python:元组(Tuple)详细教程
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号,列表使用方括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可https://jq.qq.com/?_wv=1 ...
- NC14683 储物点的距离
NC14683 储物点的距离 题目 题目描述 一个数轴,每一个储物点会有一些东西,同时它们之间存在距离. 每次给个区间 \([l,r]\) ,查询把这个区间内所有储物点的东西运到另外一个储物点的代价是 ...
- pytest多进程/多线程执行测试用例
前言: 实际项目中的用例数量会非常多,几百上千:如果采用单进程串行执行的话会非常耗费时间.假设每条用例耗时2s,1000条就需要2000s $\approx$ 33min:还要加上用例加载.测试前/后 ...
- spring boot 打包为war包方法
刚刚接触spring boot,其快速开发的特性吸引我去研究一下.于是我写了个demo,用spring boot内置的tomcat运行的很好,但是我需要把它部署到外部的tomcat中,于是从网上查找资 ...
- Identity Server 4客户端认证控制访问API
项目源码: 链接:https://pan.baidu.com/s/1H3Y0ct8xgfVkgq4XsniqFA 提取码:nzl3 一.说明 我们将定义一个api和要访问它的客户端,客户端将在iden ...
- Tomcat日志乱码解决方法
将配置文件logging.properties所有含有UTF-8的删除
- 5-1 Vant | 移动组件库
Vant 什么是Vant Vant是一个轻量,可靠的移动端组件库,2017开源 目前 Vant 官方提供了 Vue 2 版本.Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付 ...