ORACLE透明网关ODBC连接MYSQL

news2024/10/7 12:19:50

客户需求oracle访问mysql数据,客户是linux7.3  11.2.0.4单实例,字符集GBK,mysql是5.7.31,字符集UTF8,下面结合网上的文档和自己的实践,配置过程如下

1.安装oracle透明网关

首先在oracle服务器上面安装oracle透明网关,在oracle的安装包的第5个包:

p13390677_112040_Linux-x86-64_5of7.zip

安装很简单,下一步就行了,在安装选项那里勾选for odbc即可。

2.在oracle服务器上安装odbc和mysql驱动

这里挂载镜像iso,然后使用yum进行安装,也比较简单

yum install unixODBC*  mysql* mariadb*

主要是安装下面这些包:

安装mariadb是为了可以使用mysql命令行来连接测试。

3.配置mysql DSN连接

配置一下驱动文件的软连接:

cd /usr/lib64/
ln -s libodbcinst.so.2.0.0 libodbcinst.so.1
ln -s libodbc.so.2.0.0 libodbc.so.1

查看odbc配置文件

[oracle@db66 oradata]$ odbcinst  -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/oracle/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

查看一下mysql的驱动是否都安装了:

[oracle@db66 oradata]$ cat /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
#####这里下面的64位驱动是否都有,正常安装了mysql-connect-odbc之后就都有了
[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

修改odbc.ini配置文件,这一步是关键点1,配置连接mysql的odbc DSN:

[oracle@db66 oradata]$ cat /etc/odbc.ini 
[vte]
Driver=MySQL     #这里是上面odbcinst.ini里面的驱动名称,下面其它的都是很简单mysql的连接信息
SERVER=192.168.50.104
PORT=3306
USER=vte1
PASSWORD=611048sl
DATABASE=vtedb
OPATION=0
TRACE=OFF

配置完成之后使用isql测试连接是否正常:

[oracle@db66 oradata]$ isql vte
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select version();
+-----------+
| version() |
+-----------+
| 5.7.31-log|
+-----------+
SQLRowCount returns 1
1 rows fetched

这里表示连接正常。

4.配置oracle透明网关配置文件

cd $ORACLE_HOME/hs/admin

vi initodbcvte.ora

这里注意这个文件的名称叫initodbcvte.ora,这里的odbcvte是第二个关键点,需要和后面监听里面的保持一致

[oracle@db66 admin]$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1/hs/admin
[oracle@db66 admin]$ cat initodbcvte.ora 
# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC
​
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = vte       ##这里是odbc.ini里面的DSN名称
HS_FDS_TRACE_LEVEL = ON
HS_FDS_SHAREABLE_NAME = /usr/lib64/libodbc.so
​
HS_LANGUAGE=AMERICAN_AMERICA.UTF8    ##这两段如果不配会出现乱码
HS_NLS_NCHAR=UCS2
​
#
# ODBC specific environment variables
#
set ODBCINI= /etc/odbc.ini
​
​
#
# Environment variables required for the non-Oracle system
#
#set <envvar>=<value>

5.配置监听和tnsnames

配置listener.ora文件,这里为了不和现在的监听冲突,我选择新建一个端口号为1522的listener2,这里的SID需要和配置文件的文件名保持一致

[oracle@db66 admin]$ cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
​
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = db66)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
​
ADR_BASE_LISTENER = /u01/app/oracle
​
LISTENER2 =
(DESCRIPTION_LIST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.66)(PORT = 1522))
  )
)
SID_LIST_LISTENER2=
    (SID_LIST=
      (SID_DESC=
            (SID_NAME=odbcvte)
            (ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
            (PROGRAM=dg4odbc)
      )
  )
​
 

配置tnsnames.ora连接此listener的服务命名:


odbcvte=
(DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.66)(PORT = 1522))
  (CONNECT_DATA =
    (SID = odbcvte)
  )
    (HS = OK)
)

配置完成之后启动listener2,并测试

lsnrctl start listener2

再用tnsping odbcvte测试:

[oracle@db66 admin]$ tnsping odbcvte
TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 25-JUN-2023 16:16:14
Copyright (c) 1997, 2013, Oracle.  All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.66)(PORT = 1522)) (CONNECT_DATA = (SID = odbcvte)) (HS = OK))
OK (0 msec)

6. 在数据库创建dblink

SQL> create public database link to_vte connect to "root" identified by "123456" using 'odbcvte';

这里注意,mysql是区分大小写的,所以这里的用户名和密码需要加双引号

7.验证dblink

8.遇到的问题

在oracle中连接到mysql之后数据都是乱码。需要在initodbcvte.ora中配置语言:

HS_LANGUAGE=AMERICAN_AMERICA.UTF8    

HS_NLS_NCHAR=UCS2

实测,只要配置第二个就不会出现中文乱码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【看完就会】Jmeter接口测试之断言详解

什么是断言&#xff1f; 断言&#xff0c;这是一个软件术语&#xff0c;简单来说&#xff0c;就是依靠软件程序自动判断操作结果的正确性。在接口测试中&#xff0c;这里的断言就是判断接口请求是否符合预期&#xff0c;从而判断接口用例是否执行通过。 你应该也听过一个概念…

【JS经验分享】你真的会写JS吗?满满干货,建议读三遍(1)

大家好&#xff0c;最近准备总结一下JS的经验&#xff0c;分享分享&#xff0c;有不对的欢迎讨论哈~ JS作为前端的基础技能&#xff0c;每一位前端开发都要运用熟练&#xff0c;但你真的会写JS吗&#xff1f;js全称JavaScript&#xff0c;是运行在浏览器上的脚本语言&#xff0…

SAP MM 物料主数据配置

物料主数据的管理不仅仅需要引起MM顾问的重视&#xff0c;同样也需要SAP的客户足够重视。 在SAP的实施过程中。客户通常需要将一个或多个历史系统的数据根据规则转换成SAP的主数据 一个实施项目的成功与否的基本就是&#xff0c;数据是否被正确的导入 1.配置一个新的物料类型…

三个美观的个人博客网站源码

怎么让源码更适合你&#xff1f;改造&#xff01; 名称&#xff1a; 二开版UI漂亮的PHP博客论坛网站源码 介绍&#xff1a;可切换皮肤界面 下载&#xff1a;https://wwwf.lanzout.com/ihLNM10bfgnc 二、名称&#xff1a;Emlog Pro博客管理系统源码绿色版下载 介绍&#xff1…

【模拟CMOS集成电路设计】带隙基准(Bandgap)设计与仿真

【模拟CMOS集成电路设计】带隙基准&#xff08;Bandgap&#xff09;设计与仿真 前言一、 设计指标二、 电路分析三、 仿真测试3.1测试电路图3.2测试结果(1)基准温度系数仿真(2)瞬态启动仿真(3)静态电流仿真(4)线性调整率仿真(5)电源抑制PSR仿真 四、测试结果五、总结附录MOS器件…

地埋式积水监测系统在城市道路中的应用

伴随着汛期的到来&#xff0c;多地遭到大雨及暴雨的袭击&#xff0c;导致城市内涝现象频繁发生&#xff0c;使整个城市陷入瘫痪状态&#xff1b;交通道路受阻&#xff0c;严重影响了市民的生活&#xff0c;国家有关部门也因此出台了不少相关防涝政策。 积水监测系统可以加强城…

《WebGIS快速开发教程第二版》完成修订了

端午节过后各位小伙伴可能也要慢慢回归工作了&#xff0c;尽管不想工作不想烧脑但是没有办法&#xff0c;该干的活一样也少不了是吧&#x1f92a;。 趁着空闲时间我完成了《WebGIS快速开发教程》这本书 的修改工作。相对于第一版&#xff0c;第二版进行了如下改动&#xff1a;…

加密与解密 调试篇 静态分析技术 (三)枚举/IDC/插件

目录 1.枚举类型 2.FLIRT 1.应用FLIRT签名 3.IDC脚本 IDC分析加密代码 4.插件 5.IDA调试器 1.加载目标文件 2.调试器界面 ​编辑 3.调试跟踪 4.断点 5.跟踪 1.枚举类型 这是一段c语言源代码 #include <stdio.h> int main(void) {enum weekday { MONDAY, TUE…

Redis入门(6)-ZSet

Redis中的Zset是有序的、可重复的&#xff08;元素不能重但score可重&#xff09;&#xff0c;其中每个元素都有一个分值score&#xff0c;Redis会根据其score对其进行从小到大的排序。 1.zadd key score member [score member] 添加元素 zadd subject 3 JAVA 2 C 1 mysql…

操作系统——磁盘调度算法的模拟与实现

一、实验题目 磁盘调度算法的模拟与实现 二、实验目的 (1) 了解磁盘结构以及磁盘上数据的组织方式。 (2) 掌握磁盘访问时间的计算方式。 (3) 掌握常用磁盘调度算法及其相关特性。 三、总体设计&#xff08;含背景知识或基本原理与算法、或模块介绍、设计步骤等&#xf…

计算机网络--网络编程(1)

简单认识一下传输层中的UDP和TCP&#xff1a; TCP&#xff1a;有链接&#xff0c;可靠传输&#xff0c;面向字节流&#xff0c;全双工 UDP&#xff1a;无连接&#xff0c;不可靠传输&#xff0c;面向数据报&#xff0c;全双工 有链接类似于打电话&#xff0c;通了就是有链接。…

软件测试项目中如何做好单元测试

前言 如《Unit Testing》书里提到&#xff0c;学习单元测试不应该仅仅停留在技术层面&#xff0c;比如你喜欢的测试框架&#xff0c;mocking 库等等&#xff0c;单元测试远远不止「写测试」这件事&#xff0c;你需要一直努力在单元测试中投入的时间回报最大化&#xff0c;尽量…

kotlin Flow系列之-SharedFlow

文章目录 前言SharedFlow之创建SharedFlow之缓存系统buffer&Slots SharedFlow源码发送数据接收数据SharedFlow存在的bug 前言 Kotlin中Flow被分为冷流 热流 两大类。比如经常被使用的flow{}函数就可以创建一个冷流。而本文的主角SharedFlow就是一个热流。冷流需要调用Flow…

Makefile基本原理详解及使用

1、什么是 Makefile 一个企业级项目&#xff0c;通常会有很多源文件&#xff0c;有时也会按功能、类型、模块分门别类的放在不同的目录中&#xff0c;有时候也会在一个目录里存放了多个程序的源代码。 这时&#xff0c;如何对这些代码的编译就成了个问题。Makefile 就是为这个问…

电路图中常见符号总结

前辈说不会FPGA电路原理图&#xff0c;就不能知道如何去控制、如何去实现 因此本篇记录看的原理图中见到的符号&#xff0c;虽然都很基础&#xff0c;但我都不会&#xff0c;难受&#xff0c;因此只能看一点记一点 >_< >_< >_< >_< >_&…

如何学习和提升软件测试与调试的能力?

要学习和提升软件测试和调试能力&#xff0c;可以考虑以下方法&#xff1a; 学习软件测试基础知识&#xff1a; 了解软件测试的基本概念、原则和方法。可以通过阅读相关书籍、参加在线课程或培训来学习软件测试的基础知识。 掌握测试技术和工具&#xff1a; 了解各种测试技术…

南卡OE Pro新品上线即刻售罄:秒空背后的热潮是什么?

近日&#xff0c;南卡OE Pro品牌的最新产品上线&#xff0c;却在瞬间被抢购一空&#xff0c;引起了广大耳机爱好者的热烈关注和激烈讨论。这一现象再次展示了南卡OE Pro在耳机市场的强劲号召力和深受用户喜爱的地位。让我们一起揭开这场秒空背后的热潮&#xff0c;探究引发如此…

全网首个Ozon选品数据分析软件重磅上线!

【萌啦OZON数据】分析工具重磅上线&#xff01;在线解析俄罗斯市场、开启热销选品新玩法&#xff01;1对1免费指导&#xff0c;详细演示软件选品&#xff0c;快速上手&#xff01; 欧洲第四大电商市场OZON 近日&#xff0c;俄罗斯电商平台Ozon2023年Q1业绩新鲜出炉。数据显示&a…

OpenStack(T版)基础环境准备

文章目录 OpenStack(T版)基础环境准备centos硬件安装版本安装两台centos7服务器虚拟网络编辑器配置网络修改主机名主机名映射关闭防火墙和SElinux配置时间服务器安装openstack(T版)包安装SQL数据库(controller)安装消息队列rabbitmq(controller)安装分布式内存对象缓存系统memc…

代码随想录算法训练营第46天 | 139.单词拆分 + 多重背包理论基础 + 背包问题总结

今日任务 目录 139.单词拆分 - Medium 多重背包理论基础 背包问题总结 递推公式 遍历顺序 139.单词拆分 - Medium 题目链接&#xff1a;力扣-139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意…