Oracle使用 ODBC+DBLINK 访问 Mysql

原创 2012年03月22日 16:49:52

 接到一个需求要在oracle中访问MySql。

实现过程:

一、oracle主机上安装unixODBC      和mysql-connector-odbc驱动。

二、oracle中建立到MySQL的DBlink。

 

实验环境和驱动:

[OS Version]

Oracle Linux Server release 5.7

[ORACLE Version]

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

[MySql Version]:

MySQL 5.1.54-1

[ODBC Driver Manager]

unixODBC-2.2.14-linux-x86-64.tar.gz

[MySQL Connector/ODBC driver ]

mysql-connector-odbc-5.1.10-linux-rhel5-x86-64bit.tar.gz

 

驱动的安装和配置都在oracle的主机上进行。配置后要重启oracle监听。

Step1. 确定使用32/64-bits的驱动

$ file $ORACLE_HOME/bin/dg4odbc

/opt/ora11g/product/11.2.3/db_1/bin/dg4odbc:ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9,dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

以上信息表明我们要使用64-bit的ODBC Driver Manager

 

 

Step 2 下载和安装 [ODBC Driver Manager] UnixODBC 2.2.14

url:http://sourceforge.net/projects/unixodbc/files/unixODBC/2.2.14/unixODBC-2.2.14-linux-x86-64.tar.gz/download

$ tar zxvfunixODBC-2.2.14-linux-x86-64.tar.gz

默认会解压到当前目录usr/local目录下,包含bin,include ,lib 三个目录

$ ls usr

bin include  lib

创建目录unixodbc-2.2.14

$ mkdir unixodbc-2.2.14

进入unixodbc-2.2.14

$ cd unixodbc-2.2.14

把 刚解压的 usr/local/目录 下的文件移动到unixodbc-2.2.14(注意不是/usr/local)

$ mv ~/tools/usr/local/*  .

$ ll

total 12

drwxr-xr-x 2oracle dba 4096 Nov 20  2008 bin

drwxr-xr-x 2 oracle dba 4096 Nov 20  2008 include

drwxr-xr-x 2 oracle dba 4096 Nov 20  2008 lib

$ cd ..

$ rm -r usr/

编辑profile文件,设置LD_LIBRARY_PATH

$ vi ~/.bash_profile

export LD_LIBRARY_PATH=/app/oracle/tools/unixodbc-2.2.14/lib

export PATH=/usr/sbin:/app/oracle/tools/unixodbc-2.2.14/bin:$PATH

$ source ~/.bash_profile

 

Step 3 下载和安装 [ODBC Driver]

url:http://www.mysql.com/downloads/connector/odbc/5.1.html

mysql-connector-odbc-3.51.30-linux-rhel5-x86-64bit.tar.gz

$ tar zxvfmysql-connector-odbc-3.51.30-linux-rhel5-x86-64bit.tar.gz

$ mvmysql-connector-odbc-5.1.10-linux-rhel5-x86-64bit   mysqlodbc_5.1.0

 

Step 4  配置 ODBC data source for MySQLConnector/ODBC driver

http://dev.mysql.com/doc/refman/5.5/en/connector-odbc-configuration-dsn-unix.html

创建odbc.ini

Database 指定的mysql数据库名区分大小写。

$ vi odbc.ini

[ Data Sources]

myodbc3    = MyODBC 3.51 Driver DSN

[myodbc3]

Driver      = /app/oracle/tools/mysqlodbc_3.51/lib/libmyodbc3.so

Description = Connector/ODBC 3.51 Driver DSN

SERVER      = 192.168.10.10

PORT        =3306

USER        =test_user

Password    =test_admin

Database    = test

OPTION      = 3

SOCKET      =

 

 

Step 5  oracle主机用isql测试oracle到mysql的连接

把odbc.ini加到环境变量中

$ vi  ~/.bash_profile

export ODBCINI=/app/oracle/tools/odbc.ini

$ source  ~/.bash_profile

$ cd unixodbc-2.2.14/bin/

[oracle@CNPEKVS43 bin]$  ./isql myodbc3 -v

+---------------------------------------+

| Connected!                 |

| sql-statement                |

| help [tablename]             |

| quit                       |

|                           |

+---------------------------------------+

 

Step6 配置 tnsnames.ora

Add the following line to  $ORACLE_HOME/network/admin/tnsnames.ora

myodbc3 =

 (DESCRIPTION =

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

   (CONNECT_DATA =

     (SID =myodbc3))

     (HS=OK)

    )

  )

 

Step 7 配置 listener.ora

Open$ORACLE_HOME/network/admin/listener.ora

find SID_LIST_LISTENER definition and add anew entry for myodbc5

 

SID_LIST_LISTENER =

 (SID_LIST =

   (SID_DESC =

     (SID_NAME = myodbc3)

     (ORACLE_HOME =/opt/ora11g/product/11.2.3/db_1)

     (PROGRAM = dg4odbc)

      (ENVS=LD_LIBRARY_PATH=/app/oracle/tools/unixodbc-2.2.14/lib)

    )

  )

 

注意:ENVS=LD_LIBRARY_PATH一定要指到lib目录下,否则会出现下述错误

ERROR at line 1:

ORA-28500: connection from ORACLE to anon-Oracle system returned this message:

[unixODBC][Driver Manager]Can't open lib

'/app/oracle/tools/mysqlodbc_5.1.0/lib/libmyodbc5.so': libodbcinst.so.1:

cannot open shared object file: No suchfile or directory {01000}

ORA-02063: preceding 2 lines from MYODBC3

 

Step 8: 配置监听的初始化文件

This file does not exist and you have tocreate it.

 

vi $ORACLE_HOME/hs/admin/initmyodbc3.ora

HS_FDS_CONNECT_INFO = myodbc3

HS_FDS_TRACE_LEVEL =user

HS_FDS_SHAREABLE_NAME = /app/oracle/tools/unixodbc-2.2.14/lib/libodbc.so

set ODBCINI=/app/oracle/tools/odbc.ini

 

Step 9: 重启监听

$ lsnrctl stop

$ lsnrctl start

$ lsnrctl status

$ tnsping myodbc3

如果tnsping 有错误,检查listener.ora,tnsnames.ora

 

Step 10 创建dblink

SQL>create public database link myodbc3  connect to "mysql_user" identified by "password" using'myodbc3';

SQL> select * from"dual"@myodbc3;

 

 

 

[MOS]参考文档:

Detailed Overview of Connecting Oracle to MySQL Using DG4ODBC DatabaseLink [ID 1320645.1]


ORACLE连接MYSQL-使用DG4ODBC.

最近做了一次Oracle连接到MySQL的实验,主要是通过DG4ODBC来连接的.以下是实验环境和实验步骤. Oracle服务器: IP:192.168.0.193 Database Versi...
  • orion61
  • orion61
  • 2014年05月23日 10:48
  • 6811

Oracle 11g 透明网关

Oracle11g通过透明网关访问SQLServer2008数据
  • mh942408056
  • mh942408056
  • 2015年04月24日 20:41
  • 10737

oracle基于odbc建立dblink访问sqlserver

^_^请注意,有可能下面的2篇文章才是您想要的东西: 1、Oracle临时表和SQL Server临时表的不同点对比 2、perl备忘 oracle基于odbc建立dblink访问sqlse...
  • zxlyx
  • zxlyx
  • 2016年03月21日 22:13
  • 2343

[Oracle, MySQL] Oracle通过dblink连接MySQL

业务上有这么一个需求,需要把Oracle的一些数据同步到MySQL,如果每次都是手动同步的话,实在太麻烦,因此花了点时间研究了下Oracle直连MySQL的方式。 参考文档:Detailed Over...
  • u010415792
  • u010415792
  • 2013年08月29日 12:04
  • 9318

oracle通过dblink连接mysql配置详解(全Windows下)

关于oracle通过dblink连接mysql,经过了两周的空闲时间研究学习,终于配置好了,真是不容易啊,仔细想想的话,其实也没花多长时间,就是刚开始走了一段弯路,所以把这次的经验分享出来,让大家少走...
  • qq_29311303
  • qq_29311303
  • 2016年11月13日 13:24
  • 1723

Oracle通过dblink连接到多台MySQL

环境:oracle 11.2.0.1.0 RHEL5.3 64bit   mysql Server version: 5.5.9 1:下载[ODBC Driver Manager] unionO...
  • wonder_2012
  • wonder_2012
  • 2012年11月23日 21:26
  • 5000

通过ODBC 创建Oracle 的DBlink

通过ODBC 创建Oracle 的DBlink   第一步创建ODBC数据源     第二步:添加文件,注意文件名和后续的地方要配对   文件名:initHSSJK227.ora ...
  • yiyuxing
  • yiyuxing
  • 2016年05月23日 12:16
  • 165

ORACLE 11g 通过odbc建立连接到mysql库的database link

1、分配mysql账号 GRANT SELECT ON test.* TO data_query@'192.168.129.%' IDENTIFIED BY 'data_query_1125';...
  • mchdba
  • mchdba
  • 2016年11月17日 21:07
  • 2948

Navicate在同步oracle数据,不同数据库之间同步

举例,oracle之间 1.navicate同步oracle数据库的时候 如果目标oracle数据库不为空则清空。 2.在navicate工具选项里面同步表结构,然后比较,右键选择全选,然...
  • Theflybird
  • Theflybird
  • 2017年01月06日 12:12
  • 465

Navicat for Oracle 同步两个库的数据/同步用户的数据

特别说明: 源:连接-需要选择的导出是那个库。模式-导出的用户名 目标:连接-要向那个库里面同步数据。模式-选择导入的库对应的用户名 其实以上的导入可以理解为【TAXMAP用户的数据导入到ORC...
  • www1056481167
  • www1056481167
  • 2018年01月04日 14:57
  • 74
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle使用 ODBC+DBLINK 访问 Mysql
举报原因:
原因补充:

(最多只允许输入30个字)