当前位置:  数据库>mysql

通过HSODBC访问mysql的实现步骤

    来源: 互联网  发布时间:2014-09-06

    本文导语:  一、环境 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. ...

一、环境
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
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版本,实在不好找,以后有机会再说吧。

    
 
 

您可能感兴趣的文章:

  • nginx服务器下通过fastcgi支持php5详细安装配置步骤
  • 求windows下成功编译通过mplayer的详细步骤
  • 红帽redhat下通过脚本和yum安装docker容器引擎的详细步骤
  • Linux/UNIX下,C++程序通过那些步骤访问Oracle或者Sybase SQL数据库?
  • 想搞嵌入式驱动的开发,请大虾给个简单例程(通过SPI读写外扩存储芯片),以及开发步骤及应注意的地方,怎么加入内核和使用该驱动?谢谢
  • mysql通过ssl的方式生成秘钥具体生成步骤
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • 现在java开发中流行通过什么方式实现对数据库操作?就好像Visual Stadio通过ADO访问数据库。
  • 通过javascript库JQuery实现页面跳转功能代码
  • php通过数组实现多条件查询实现方法(字符串分割)
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 如何设置JTextArea里字体??通过什么方法可以实现?
  • linux下通过crond实现自动执行程序
  • [Fedora] 使用Xmanger来实现在windows下通过远程桌面来访问linux主机的方法
  • Session id实现通过Cookie来传输方法及代码参考
  • 请教,怎样通过jsp和servlet实现rmi技术
  • 通过Oracle发送Email的实现方法 iis7站长之家
  • 请教为什么在C++编译通过并实现的程序,在linux下就会出错
  • php通过pack和unpack函数实现对二进制数据封装及解析
  • 如何通过http代理实现socks代理?
  • 在LINUX下,进程间访问临界资源只能通过效率很低的锁文件方式来实现吗?
  • codeblocks8.02 for linux,程序可以编译通过,但是通过右键“查找fopen函数的声明”或“实现”,都是提示“没有找到:fopen”,为什么
  • 请问各位高手,怎么样在windows上通过批处理脚步启动solaris上的编译器,实现自动编译?(solaris通过telnet登陆)?
  • 通过viewport实现jsp页面支持手机缩放
  • jar是通过批处理实现双击后执行的吗?
  • 通过Oracle发送Email的实现方法
  • 如何实现通过网站发短信
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php通过socket_bind()设置IP地址代码示例
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • 通过docker commit命令保存对docker容器的修改
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 通过docker run命令运行新的docker镜像
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • 通过docker ps命令检查运行中的docker镜像
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • 通过docker search命令搜索可用docker镜像
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 如何通过 Docker 在 Linux 上托管 .NET Core
  • Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
  • Linux下通过rpm安装软件详细介绍以及如何将软件安装到指定目录
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • docker下通过Dockerfile指令构建镜像的指令选项介绍
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3