测试环境:

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的更多相关文章

  1. Oracle之数据库的连接

    Oracle 默认用户 数据库创建完毕后,需要设置数据库的默认用户.Oracle中为管理员预置了两个用户分别是SYS和SYSTEM.SYS的初始密码为Oracle安装时设置的数据库口令 admin,在 ...

  2. Tomcat7中配置Oracle 11g数据库DBCP连接池

    将       ojdbc6.jar       tomcat-jdbc-7.0.37.jar            拷贝到工程的WEB-INF\lib  下面 一.在Tomcat的配置文件Tomca ...

  3. Oracle远程数据库一直连接不上的原因:多了个空格

  4. DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常

    最近,DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常. 版本说明 commons-dbcp-1.4.jar commons-pool-1 ...

  5. plsql通过instantclient连接oracle数据库报连接超时

    配置:数据库oracle10.2;服务器操作系统centos5.5:客户机操作系统win7 32位:plsql版本10.0.5 配置前提必须关闭客户机与服务器操作系统的防火墙,否则会出现“连接超时”的 ...

  6. 涂抹Oracle笔记2:数据库的连接-启动-关闭

    一.数据库的连接sqlplus <username>[/<password>][@<connect_idertifier>]|/[as sysdba| as sys ...

  7. Oracle 连接 另一个Oracle数据库 服务器连接

    一.场景   两台不同的服务器A.B分别装有不同业务的oracle数据库,因业务需要,现需要将B中test表的数据,定时同步到A中. 二.实现   根据以上场景,我想到了oracle中的dblink, ...

  8. oracle数据库无法连接 The Network Adapter could not establish

    Caused by: java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection 这个错误 ...

  9. Java连接Oracle/MySQL数据库教程

    一.下载 oracle java驱动下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090 ...

  10. java oracle thin 和 oci 连接方式实现多数据库的故障切换

    java oracle thin 和 oci 连接方式实现多数据库的故障切换 一.thin方式 该种方式简便易用非经常见. 当中URL为 jdbc:oracle:thin:@(DESCRIPTION= ...

随机推荐

  1. SpringCloud Ribbon负载均衡服务调用实战

    介绍 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具. 主要功能是提供客户端的软件负载均衡算法和服务调用.Ribbon客户端组件提供一系列完善 ...

  2. Spring Boot图书管理系统项目实战-9.归还图书

    导航: pre:  8.续借图书 next:10.借还统计 只挑重点的讲,具体的请看项目源码. 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.页面设计 2.1 bookRetur ...

  3. Redis原理学习:Redis主体流程分析

    转自:七把刀 https://www.jianshu.com/p/427cf97d7951 网上分析Redis源码的文章挺多,如黄健宏的<Redis设计与实现>就很详尽的分析了redis源 ...

  4. Docker实践之07-数据管理

    目录 一.数据卷概述 二.创建数据卷 三.查看数据卷 四.挂载数据卷 五.删除数据卷 六.挂载主机目录或文件 七.挂载数据卷与主机目录/文件的比较 一.数据卷概述 数据卷是一个可供一个或多个容器使用的 ...

  5. SpringMvc原理概述

    目录 MVC整体架构和流程 SpringMVC 框架组件概述 SpringMVC 配置详解 springmvc.xml MVC整体架构和流程 用户发送请求至前端控制器 DispatcherServle ...

  6. 详解Python中sys模块的功能与应用

    本文分享自华为云社区<深入Python:sys模块的功能与应用详解>,作者: 柠檬味拥抱. 在Python的标准库中,sys 模块是一个常用而强大的工具,它提供了与Python解释器交互的 ...

  7. Redis单线程为什么如此之快

    一.概述 Redis的高并发和快简单可以归结为一下几点: 1.Redis是基于内存的: 2.Redis是单线程的: 3.Redis使用多路复用技术. 4.高效的数据结构 但具体怎么做的呢,下面来详细看 ...

  8. php本地上传文件类

    /** * Class UploadFile * @author fengzi */ class UploadFile { public $error = array(); //上传前的error信息 ...

  9. Go和TinyGo

    Go和TinyGo是两种不同的Go语言编译器,它们之间有以下几点区别: 目标平台: Go:Go语言编译器主要面向通用计算机平台,如Windows.Linux.macOS等. TinyGo:TinyGo ...

  10. springboot+kaptcha生成数学运算验证码和字符验证码

    使用以下代码只需要复制粘贴,修改一处文本生成器路径即可,文中有交代. 1.添加kaptcha依赖 <dependency> <groupId>com.github.penggl ...