Oracle通过数据库链连接KingbaseES
测试环境:
| ip | 数据库版本 |
|---|---|
| 192.168.254.135 | oracle 11g |
| 192.168.254.137 | V008R006C005B0023 |
通过oracle官网得知,Oracle使用DG4ODBC作为连接到其他非Oracle数据库的数据网关。其原理图如下:

所以我们需要在Oracle服务器安装unixODBC和KingbaseES的ODBC驱动。
1.root用户登录到oracle数据库服务器。
2.安装unixODBC
yum install unixODBC.x86_64 注:unixODBC可能默认装系统的时候就已经安装上了。
[root@oracledb ~]# odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
注意:由于不同版本之间存在差异,为了保证能读取正确的配置,强烈建议统一使用用户主目录下 .odbc.ini 文件。
3.安装KingbaseES的ODBC驱动
KingbaseES 安装完成后在数据库安装目录下的 Interface/odbc 中就有odbc驱动,所以这里只要将文件拷贝到oracle主机上即可。
scp 192.168.254.137://home/kingbase/kdb/Interface/odbc/* /usr/local/lib/
设置文件权限为755。chmod 755 /usr/local/lib/* 我的/usr/local/lib/目录原来是空目录,这里直接用*了。
4.配置ODBC
[root@oracledb lib]# cat /etc/odbcinst.ini
# Example driver definitions
# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[kdb]
Description = ODBC for kingbase
Driver64 = /usr/local/lib/kdbodbcw.so
Setup64 = /usr/lib64/libodbcpsqlS.so
FileUsage = 1
kdbodbcw.so是KingbaseES ODBC驱动的库。
libodbcpsqlS.so 是unixODBC的库。
[root@oracledb ~]# cat .odbc.ini
[V8]
Description = kdb test
Driver = kdb
Database = test
Servername = 192.168.254.137
UserName = system
Password = system
Port = 54321
ReadOnly = 0
ConnSettings = set client_encoding to UTF8
这里Driver与odbcinst.ini中的[kdb]对应,可以取任何名字,但两者需要相同。
[V8]是一个自定义的连接数据库的配置名称,其它应用程序就是引用这个名称访问数据库。
5.验证ODBC连接
[root@oracledb ~]# isql -v V8
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select version();
+--------------------------------------------------------------------------------------------------------------------------+
| version |
+--------------------------------------------------------------------------------------------------------------------------+
| KingbaseES V008R006C005B0023 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46), 64-bit |
+--------------------------------------------------------------------------------------------------------------------------+
SQLRowCount returns 1
1 rows fetched
测试能够正常连接数据库并查询。
将.odbc.ini 配置文件拷贝一份到oracle用户的home目录下,确认文件属性是否正确。
下面来配置 oracle 透明网关部分,使用oracle用户来操作,共涉及3个文件。
$ORACLE_HOME/network/admin/listener.ora
$ORACLE_HOME/hs/admin/init<SID_NAME>.ora
$ORACLE_HOME/network/admin/tnsnames.ora
在 cd $ORACLE_HOME/hs/admin 目录下有 监听和tns配置的示例文件。
1.配置listener.ora
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=KINGBASE)
(ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1)
(PROGRAM=dg4odbc)
)
)
在listener.ora文件中添加上面这段内容。
其中SID_LIST_LISTENER后面的这个LISTENER是监听器的名字,默认的都是这个。
SID_NAME=KINGBASE KINGBASE为自定义名称。这个名称将决定init<SID_NAME>.ora这个文件的名称(大小写要一致)
2.创建init<SID_NAME>.ora
cd $ORACLE_HOME/hs/admin/initKINGBASE.ora
根据监听的配置,这里创建initKINGBASE.ora
[oracle@oracledb admin]$ cat initKINGBASE.ora
HS_FDS_CONNECT_INFO = V8
HS_FDS_TRACE_LEVEL = 0
HS_FDS_SHAREABLE_NAME = /usr/local/lib/kdbodbcw.so
HS_NLS_NCHAR=UCS2
HS_LANGUAGE=AMERICAN_AMERICA.AL32UTF8
set ODBCINI= /home/oracle/.odbc.ini
3.配置 tnsnames.ora
KINGBASE =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SID=KINGBASE))
(HS=OK)
)
SID=KINGBASE 这个listener.ora文件中的sid设置一样。
第一行的KINGBASE = 可设置为任意名称,供后续创建数据库链时使用。
4.重启或者重载监听。
5.连接oracle创建数据库链,测试。
create database link to_kingbase connect to "system" identified by "system" using 'KINGBASE';
在KingbaseES数据库中创建表并插入数据

在oracle数据库中进行查询

Oracle通过数据库链连接KingbaseES的更多相关文章
- Oracle之数据库的连接
Oracle 默认用户 数据库创建完毕后,需要设置数据库的默认用户.Oracle中为管理员预置了两个用户分别是SYS和SYSTEM.SYS的初始密码为Oracle安装时设置的数据库口令 admin,在 ...
- Tomcat7中配置Oracle 11g数据库DBCP连接池
将 ojdbc6.jar tomcat-jdbc-7.0.37.jar 拷贝到工程的WEB-INF\lib 下面 一.在Tomcat的配置文件Tomca ...
- Oracle远程数据库一直连接不上的原因:多了个空格
- DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常
最近,DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常. 版本说明 commons-dbcp-1.4.jar commons-pool-1 ...
- plsql通过instantclient连接oracle数据库报连接超时
配置:数据库oracle10.2;服务器操作系统centos5.5:客户机操作系统win7 32位:plsql版本10.0.5 配置前提必须关闭客户机与服务器操作系统的防火墙,否则会出现“连接超时”的 ...
- 涂抹Oracle笔记2:数据库的连接-启动-关闭
一.数据库的连接sqlplus <username>[/<password>][@<connect_idertifier>]|/[as sysdba| as sys ...
- Oracle 连接 另一个Oracle数据库 服务器连接
一.场景 两台不同的服务器A.B分别装有不同业务的oracle数据库,因业务需要,现需要将B中test表的数据,定时同步到A中. 二.实现 根据以上场景,我想到了oracle中的dblink, ...
- oracle数据库无法连接 The Network Adapter could not establish
Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection 这个错误 ...
- Java连接Oracle/MySQL数据库教程
一.下载 oracle java驱动下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090 ...
- java oracle thin 和 oci 连接方式实现多数据库的故障切换
java oracle thin 和 oci 连接方式实现多数据库的故障切换 一.thin方式 该种方式简便易用非经常见. 当中URL为 jdbc:oracle:thin:@(DESCRIPTION= ...
随机推荐
- 【OpenGL ES】纹理贴图
1 前言 纹理贴图是指:将图片贴在模型的表面. 纹理贴图的本质是:将图片划分为一系列三角形,使得图片顶点序列与模型顶点序列中的顶点一一对应,对于模型中任意三角形内部的坐标和图片中对应三角形内部 ...
- 以二进制文件安装K8S之部署Node服务
概述 在Node上需要部署Docker.kubelet.kube-proxy,在成功加入Kubernetes集群后,还需要部署CNI网络插件.DNS插件等管理组件. 本节以将192.168.3.138 ...
- Taurus.MVC WebMVC 入门开发教程3:数据绑定Model
前言: 在这篇 Taurus.MVC WebMVC 入门开发教程的第三篇文章中, 我们将重点介绍如何进行数据绑定操作,还会学习如何使用 ${属性名称} CMS 语法来绑定页面上的元素与 Model 中 ...
- 【开发工具】Linux 服务器 Shell 脚本简单应用(MySql备份等脚本)
上一章介绍完基础[开发工具]Linux 服务器 Shell 脚本简单入门,这一章结合实际运用 对于 do while if else等流程控制基础不再说明,和编程语言大同小异,可以在实际的脚本使用中学 ...
- PicGo如何设置阿里云图床
打开阿里云官网.注册并且登录.然后产品下拉列表里面通过搜索或者直接找到存储.对象存储OSS 默认你已经激活了,然后进入到控制台里面. 注意事项 Bucket名称需要全英文,不能有大写字母 服务器选国内 ...
- Vue源码学习(十):关于dep和watcher使用的一些思考
好家伙, 前面想了好久,都没想明白为什么要dep和watcher打配合才能实现数据-视图同步 为什么要多一个依赖管理这样的东西 给每个数据绑个watcher(xxfunction),然后,数据变了 ...
- 【Azure Redis 缓存】Azure Cache for Redis 是否记录具体读/写(Get/Set)或删除(Del)了哪些key呢?
问题描述 在Azure Redis的门户活动日志中,可以查看到的是对于Redis资源本身的操作.但是对于客户端连接到Redis服务后,对服务所做出的读写,或删除操作,是否有日志可以查看到呢? 问题回答 ...
- Sealos 是企业节省成本的终极武器
本文通过多维度,多场景对比来阐述 Sealos 为企业节省大量成本,结合一些现有客户具体的实际情况全面分析成本模型,企业可以根据自己的实际情况来对号入座,看是否适合使用 Sealos. 云操作系统节省 ...
- ACS 构词法 + 44个后缀 记忆方法
抖音号:九词君-不用语法学好英语
- react中css里面 class中的 图片的相对地址 完美解决 backgroundImage
发现问题:缓存 之前react的图片,也在style里面,也无所谓. 刚做了一个输入框,change的时候改变图片,每次都刷新图片,关键是没缓存,这哪受得了 之前用的: 网上搜索各种插件,替换什么的, ...