`
suxing
  • 浏览: 209121 次
  • 性别: Icon_minigender_1
  • 来自: 遵义
社区版块
存档分类
最新评论

windows下oracle10访问mysql

 
阅读更多

测试环境:

win2003 32,oracle 10.2.0.1,dg4odbc 11.1.0.7,mysql odbc5.1.6

ubuntu 9.04 server,mysql 5.0

 

oracle连接mysql有两种方式,hsodbc和dg4odbc,简单说dg4odbc是hsodbc的升级,在用hsodbc时遇到两个问题,首先是64位版的oracle没有hsodbc.exe这个文件,网上说把32位版的文件复制也能用;然后是看不到mysql的char或是varchar类型的字段,要命的问题,据说用odbc3.5.1就没事。

 

用dg4odbc遇到double quotes问题,原文是引用:

The syntax problem is cuased when MySQL DB is not running in ANSI mode as MYSQL then uses back ticks instead of double quotes to quote obejct names. HSODBC 11.1.0.6 does not accept it and always forces to use double quotes.

 

解决方法:

To work around this issue you need to patch DG4ODBC to 11.1.0.7 (included in the RDBMS patchset) and you also need to apply a patch (6332478) to your 10.2.0.4 Oracle database. If this patch does not exist for your platform, you can request a backport for your 10.2.0.4 release.
Another option would be to switch the MySQL db to ANSI (permanently) or for the DG4ODBC session only.

 

DECLARE
ret integer;
c integer;
BEGIN
c := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@mysql;
DBMS_HS_PASSTHROUGH.PARSE@mysql(c, 'SET SESSION SQL_MODE=''ANSI_QUOTES'';');
ret := DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@mysql(c);
dbms_output.put_line(ret ||' passthrough output');
DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@mysql(c);
END;

 

https://kr.forums.oracle.com/forums/thread.jspa?threadID=935938&tstart=0

 

https://cn.forums.oracle.com/forums/thread.jspa?threadID=2319351&tstart=0&start=0

 

不升级到10.2.0.4就只能在会话开始时设置mysql的sql模式为ansi。

 

详细记下步聚,备忘。

 

1、下载mysql 的odbc驱动   http://mysql.cs.pu.edu.tw/downloads/connector/odbc/index.html

 

2、配置odbc数据源,注意使用系统DSN ,取名为mysqlora,字符集设置成和要连接的mysql数据库一样。

 

 

3、在D:\app\Administrator\product\11.1.0\db_1\hs\admin下建立initmysqlora.ora文件

内容如下:

HS_FDS_CONNECT_INFO = mysqlora
HS_FDS_TRACE_LEVEL = 0

 

4、在D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN下修改 listener.ora

增加:

 

    (SID_DESC =

      (SID_NAME = mysqlora)

      (ORACLE_HOME = D:\app\Administrator\product\11.1.0\db_1 )

      (PROGRAM = dg4odbc)

    )

 

修改后listener.ora 内容如下:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = d:\oracle\product\10.2.0\db_1 )

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (SID_NAME = mysqlora)

      (ORACLE_HOME = D:\app\Administrator\product\11.1.0\db_1 )

      (PROGRAM = dg4odbc)

    )

  )


LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

    )

  )

 

6、重启监听

 

5、在D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN下 修改tnsnames.ora

增加:

mysqlora =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
            (CONNECT_DATA =
            (SID=mysqlora)
            )
           (HS =ok)
    )


6、创建dblink,注意引号

 

create public database link mysql
  connect to "username"
  identified by "passwd"
  using 'mysqlora';

 

7、创建存储过程

create or replace procedure mysql_mode is
  ret integer;
  c   integer;
BEGIN
  c := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@mysql;
  DBMS_HS_PASSTHROUGH.PARSE@mysql(c, 'SET SESSION SQL_MODE=''ANSI_QUOTES'';');
  ret := DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@mysql(c);
  dbms_output.put_line(ret || ' passthrough output');
  DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@mysql(c);
END;

 

8、访问mysql

 

call mysql_mode(); --会话开始时执行。

select "username" from "user"@mysql;

 

相关问题链接:

Oracle HS (Heterogeneous Services)深入解析 及协同Gateway工作流程

https://forums.oracle.com/forums/thread.jspa?threadID=2130517

 

oralce与其他数据库的异构连接

分享到:
评论

相关推荐

    Oracle10g通过DBLink访问MySQL数据(Windows)

    Oracle10g通过DBLink访问MySQL数据 安装环境:Windows_Server2003, Oracle10gR2, MySQL4(服务器版在另外电脑上),MySql-Connector3.51(客户端ODBC驱动) 。

    ORACLE透明网关访问mysql

    在本篇文章中,我们将详细探讨如何在Windows Server 2012环境下,利用Oracle 11.2版本的数据库来通过透明网关访问MySQL 5.7数据库。该过程涉及服务器配置、数据库权限设置、ODBC驱动安装配置、网络配置以及Oracle...

    windows下oracle10G异构连接MYSQL5

    在Windows环境下,Oracle 10g可以通过异构连接(Heterogeneous Services)访问MySQL 5数据库,这使得不同数据库系统间的交互成为可能。以下是一份详细的配置步骤: 首先,我们需要在MySQL端进行设置: 1. 创建...

    Oracle10g通过DBLink访问MySQL数据

    ### Oracle10g通过DBLink访问MySQL数据 在企业级应用环境中,经常会出现不同数据库系统之间的数据交互需求。本文将详细介绍如何配置Oracle10g数据库,使其能够通过DBLink访问MySQL数据库中的数据。这一功能对于实现...

    oracle 到mysql转换工具

    Oracle到MySQL转换工具是一款专为数据库迁移设计的实用软件,主要功能是将Oracle数据库中的数据结构和SQL语句转换成MySQL兼容的格式,方便用户在不同的数据库系统间进行数据迁移。这款工具通常适用于那些需要从...

    oracle mysql jdbc驱动

    Oracle公司为MySQL提供官方的JDBC驱动,确保了高效、稳定的数据访问性能。 首先,我们来了解一下JDBC。JDBC是Java语言中用来规范客户端程序如何和数据库进行交互的一种接口,由Java SE的标准API定义。通过JDBC,...

    mysql导数据到oracle

    标题“mysql导数据到oracle”涉及的是数据库迁移或数据同步的过程,从MySQL数据库系统将数据迁移到Oracle数据库系统。在IT行业中,这种操作通常用于升级数据库系统、整合多个数据库或者在不同平台间转移数据。 描述...

    解决oracle与mysql之间访问问题

    例如,在本案例中,需要实现一个Oracle数据库(版本为11G或12c)通过DBLINK访问MySQL数据库(版本8.0及以上)。具体环境如下: - **Oracle数据库**: - 操作系统:Linux - IP地址:10.188.27.250 - **MySQL数据库...

    Oracle19C RAC通过gateways连接SQL server数据库

    Oracle Gateway使得不同数据库系统间的数据交互成为可能,实现异构数据库间的透明访问。 首先,我们需要了解Oracle 19C RAC的网络配置。在这个环境中,我们有两个节点:racdb1和racdb2,它们分别拥有公共IP(192....

    oracle+sqlserver+mysql jar包

    Oracle、SQL Server和MySQL是全球广泛应用的三大关系型数据库管理系统(RDBMS)。在Java编程环境下,开发者经常需要与这些数据库进行交互,这就需要用到特定的驱动程序,通常是以JAR(Java Archive)文件的形式存在...

    MySQL或Oracle通过ODBC与C#建立连接和进行事务处理

    ### MySQL或Oracle通过ODBC与C#建立连接和进行事务处理 #### 一、概述 在现代企业级应用开发中,数据库的选择对于整个系统的稳定性和性能有着至关重要的影响。随着多语言开发的需求日益增长,如何让不同的编程语言...

    在Linux和WINDOWS下通过ODBC访问Oracle和SQL Server数据库的解决方案

    本篇文章将深入探讨如何在Linux和Windows操作系统下,通过ODBC(Open Database Connectivity)来访问Oracle和SQL Server这两种常见的关系型数据库。 首先,ODBC是一种标准的数据库访问接口,它允许应用程序通过一个...

    Oracle_SQL_access_MySQL数据库转换工具

    SQL Server则是微软公司的数据库产品,广泛应用在Windows环境下的各种业务系统中。Access是微软Office套件的一部分,是一款轻量级的数据库管理系统,适合小型企业和个人使用。MySQL则是一款开源、免费的关系型数据库...

    MySQL 8.0.28 Windows 版本

    MySQL 8.0.28 是一个流行的开源关系型数据库管理系统(RDBMS)的最新Windows版本,由Oracle公司维护。这个版本针对Windows操作系统进行了优化,提供了强大的性能、可靠性和易用性,使得它成为Windows服务器环境中的...

    Mysql,Oracle,Sqlserver数据库驱动包

    本主题将详细探讨MySQL、Oracle和SQL Server这三种主流关系型数据库管理系统(RDBMS)的驱动包,以及它们在数据交互中的作用。 1. MySQL驱动包:MySQL是一种开源、免费的数据库系统,广泛应用于Web开发。Java应用...

    全能数据库管理软件,支持oracle mysql db2 mssql ,并且是免费的

    它提及了对Oracle、MySQL、DB2和MSSQL的支持,这些都是非常流行的关系型数据库管理系统。 Oracle是由甲骨文公司提供的一个全面的、集成的、开放的、先进的企业级数据库解决方案。它以其高可用性、高性能和安全性而...

    SQLserver、Oracle、Mysql区别.doc

    SQL Server、Oracle和MySQL是三种广泛应用的关系型数据库管理系统(RDBMS),各有其特点和优势。以下是对这三种数据库系统的详细对比: 1. **SQL Server** - 开发商:由微软公司开发,主要应用于Windows操作系统。...

    MySql5.7.17 windows版的安装

    1. **访问MySQL官网**:打开浏览器并访问MySQL官方下载页面:<http://dev.mysql.com/downloads/mysql/>。 2. **登录Oracle账号**:如果您已经有Oracle账号,请直接登录;如果没有,请先注册一个Oracle账号。 3. **...

    sqlserver/oracle/mysql/等数据库驱动大全

    例如,一个使用ODBC的应用程序可以在不修改代码的情况下,只需更换不同的ODBC驱动,就可以连接到SQL Server、Oracle或MySQL数据库。 在实际开发中,使用ODBC驱动可能会涉及到以下知识点: 1. 数据源配置:每个ODBC...

Global site tag (gtag.js) - Google Analytics