Oracle通过HSODBC访问mysql

一、环境

OS:Linux myhostname 2.6.9-42.ELsmp #1 SMP Sat Aug 12 09:39:11 CDT 2006 i686 i686 i386 GNU/Linux

      CentOS release 4.4 (Final)

Oracle:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod,数据库已经安装好

MySQL:5.1.34-community for windows

二、安装配置

1. 安装unixODBC,用root用户

rpm -Uvh unixODBC-2.2.12-1.el4s1.1.i386.rpm

2. 安装mysql ODBC,用root用户

rpm -Uvh mysql-connector-odbc-5.1.5-0.i386.rpm

3. 安装oracle gateway,用oracle用户

我装的是10201_gateways_linux32.zip

unzip 10201_gateways_linux32.zip

cd gateways

./runInstaller

安装方法和oracle db 软件一样,我把gateway和db装一起了,共用一个OracleHOME

4. 配置/etc/odbc.ini

[DSName] Driver         =/usr/lib/libmyodbc5.so Description    =MySQL Server         =xxx.xxx.xxx.xxx Port           =3306 User           =root UID            =root Password   = mypass Database    =mysqldbname Option         =3 Socket         = charset        =utf8

测试ODBC

isql -v DSName root mypass

5. 配置$ORACLE_HOME/hs/admin/initDSName.ora

HS_FDS_CONNECT_INFO = DSName HS_FDS_TRACE_LEVEL = 0 HS_FDS_SHAREABLE_NAME = /usr/lib/libmyodbc5.so

6. 配置listener.ora,加红色部分

SID_LIST_LISTENER =   (SID_LIST =     (SID_DESC =       (SID_NAME = PLSExtProc)       (ORACLE_HOME = /usr/u01/app/oracle/product/10.2.0/db_1)       (PROGRAM = extproc)     )     (SID_DESC =       (GLOBAL_DBNAME = BOSS)       (ORACLE_HOME = /usr/u01/app/oracle/product/10.2.0/db_1)       (SID_NAME = BOSS)     ) (SID_DESC =       (SID_NAME = phpcms)       (ORACLE_HOME = /usr/u01/app/oracle/product/10.2.0/db_1)       (PROGRAM = hsodbc)     )   )

7. 配置tnsnames.ora,添加

DSName = (DESCRIPTION =        (ADDRESS_LIST =            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.125)(PORT = 1521))        )        (CONNECT_DATA = (SERVICE_NAME = DSName))        (HS = OK) )

8. 重启监听器并测试

lsnrctl reload

lsnrctl service

Service "DSName" has 1 instance(s).   Instance "DSName", status UNKNOWN, has 1 handler(s) for this service...     Handler(s):       "DEDICATED" established:3 refused:0          LOCAL SERVER The command completed successfully

tnsping DSName

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.125)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = DSName)) (HS = OK)) OK (0 msec)

9. 建立dblink

CREATE PUBLIC DATABASE LINK linkname  CONNECT TO "root"  IDENTIFIED BY <PWD>  USING 'DSName';

10. 测试

select "name" from t1@linkname;

三、遗留问题

1. 字符集问题,最好oracle和mysql是utf8,否则中文有问题

2. text字段会报错:

select "textcol" from t1@linkname;

ORA-28500: 连接 ORACLE 到非 Oracle 系统时返回此信息:  [Generic Connectivity Using ODBC][MySQL][ODBC 5.1 Driver][mysqld-5.1.34-community]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"t1" WHERE "id"=1' at line 1 (SQL State: 37000; SQL Code: 1064) ORA-02063: 紧接着 2 lines (起自 DSName)

本来想用datadirect的mysql ODBC试试,可只支持mysql enterprise版本,实在不好找,以后有机会再说吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

海量数据迁移之外部表切分(r2笔记52天)

在前几篇中讨论过海量数据的并行加载,基本思路就是针对每一个物理表都会有一个对应的外部表,在做数据迁移的时候,如果表有上百G的时候,一个物理表对应一个外部表性能上...

2927
来自专栏程序猿

Oracle_12C的新特性

这里我们来领略下Tom眼中的12个特性增强: ? #1 Even better PL/SQL from SQL, 直接在SQL中嵌入PL/SQL对象并运行,猜测...

2949
来自专栏杨建荣的学习笔记

一个MySQL死锁问题的复现

很久之前有一个同事问我一个关于死锁的问题,一直在拖这个事情,总算找了空来看看。 这个环境的事务隔离级别是RR,仔细看了下问题描述和背景,发现还真不是一...

3939
来自专栏杨建荣的学习笔记

一个oracle蠕虫病毒 (r4笔记第60天)

关于计算机病毒,说起来内容就很丰富了,但是第一次听到关于oracle中的病毒时,却感觉很新鲜。这是一个蠕虫病毒,距离现在已经有10年了,但是现在看起来还是能够借...

2463
来自专栏杨建荣的学习笔记

awr性能问题排查第一篇(r3笔记第42天)

对于awr,里面涵盖的内容比较杂,有时候看报告的时候总是不知道该怎么下手。时间长了,可能会有一些阅读习惯或者心得。今天在看大师chris lawson的一篇博文...

2824
来自专栏杨建荣的学习笔记

海量数据迁移之外部表加载(100天)

本地有一个小的环境,今天照例登上sqlplus,突然发现报了如下的错误。一看原来归档满了。我记得前几天做一个批量操作临时把temp文件resize了很大,限于本...

3288
来自专栏数据库新发现

Oracle诊断案例-Job任务停止执行

Last Updated: Saturday, 2004-11-20 12:47 Eygle

692
来自专栏杨建荣的学习笔记

归档问题导致的数据库无法启动 (80天)

本地有一个小的环境,今天照例登上sqlplus,突然发现报了如下的错误。一看原来归档满了。我记得前几天做一个批量操作临时把temp文件resize了很大,限于本...

32710
来自专栏数据库新发现

Oracle诊断案例-Job任务停止执行[最终版]

Last Updated: Friday, 2004-11-26 9:48 Eygle

1183
来自专栏杨建荣的学习笔记

备库查询导致的ORA-01110错误及修复(r8笔记第67天)

最近帮助业务部门解决了一个技术问题,因为发现有数据问题需要对存在问题的数据做分析。当然一个难点就是把数据给筛选出来,当我看到他们提供的语句,在备 库做了简单的数...

3397

扫码关注云+社区