通过HSODBC访问mysql的实现步骤

2016-02-19 09:25 23 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享通过HSODBC访问mysql的实现步骤教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - 编程语言 】

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

来源:http://www.tulaoshi.com/n/20160219/1590715.html

延伸阅读
MySQL的ODBC接口实现是通过安装MyODBC驱动,这个驱动程序是跨平台的。如果在Linux等unix体系操作系统下使用,需要先安装iodbc这些第三方ODBC标准支援平台。  简单的ASP示例代码:  %  dim sql,mysql  set sql = server.createobject("adodb.connection")  mysql="driver={mysql odbc&nb...
安装MySQL 假设你把所有必须的源码或者包都放在了/tmp下。如果你下载的是RPM包的话,那比较简单;如果你下载的是二进制包(你没有rpm程序或者你想自定义的话),那么会稍微麻烦一点。 RPM包安装 你必须成为root用户才能使用rpm安装程序,以下是安装过程: $ cd /tmp $ su # rpm -Uvh MySQL*(安装和MySQL相关的所有包) ...
如果使用的是MySQL 5.0.x 可以直接将以下内容保存替换MySQL中的my.ini,记得要修改basedir和datadir两个栏目的路径。 代码如下: [client] port=3306 [mysql] default-character-set=gbk [mysqld] port=3306 basedir="D:/web/mysql/" datadir="D:/web/mysql/Data/" default-character-set=gbk default-storage-engine=MYISAM max_co...
标签: 电脑入门
Linux服务器被攻击了怎么办?其实不用担心,通过拒绝国外ip访问的方法能够减少被攻击的次数,下面图老师小编就教大家Linux屏蔽国外ip访问的方法,一起来学习下吧。 1、其实国外的IP 有很多的,而且那么多的国家IP量是非常大的,一个国家的IP的不多,也就是说我们可以收集到国内的IP,然后只允许国内的IP 访问,其它的IP都拒绝,这样也可以达到...
原因分析: Host 'Local' is not allowed to connect to this MySQL server 典型的远程权限问题。 问题症结: MySQL 没有开放远程登录的权限。要看你的服务器到底用的那种系统,linux或者是Windows,这个解决办法不同,你可以上网搜索一下,解决问题的资料很多。 解决办法: 开启 MySQL 的远程登陆帐号有两大步: 1、确定服务器上...

经验教程

421

收藏

22
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部