通過(guò)HSODBC訪(fǎng)問(wèn)mysql的實(shí)現(xiàn)步驟
更新時(shí)間:2009年10月13日 19:10:06 作者:
通過(guò)HSODBC訪(fǎng)問(wèn)mysql的實(shí)現(xiàn)方法,需要的朋友可以參考下。
一、環(huán)境
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,數(shù)據(jù)庫(kù)已經(jīng)安裝好
mysql:5.1.34-community for windows
二、安裝配置
1. 安裝unixODBC,用root用戶(hù)
rpm -Uvh unixODBC-2.2.12-1.el4s1.1.i386.rpm
2. 安裝mysql ODBC,用root用戶(hù)
rpm -Uvh mysql-connector-odbc-5.1.5-0.i386.rpm
3. 安裝oracle gateway,用oracle用戶(hù)
我裝的是10201_gateways_linux32.zip
unzip 10201_gateways_linux32.zip
cd gateways
./runInstaller
安裝方法和oracle db 軟件一樣,我把gateway和db裝一起了,共用一個(gè)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
測(cè)試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. 重啟監(jiān)聽(tīng)器并測(cè)試
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. 測(cè)試
select "name" from t1@linkname;
三、遺留問(wèn)題
1. 字符集問(wèn)題,最好oracle和mysql是utf8,否則中文有問(wèn)題
2. text字段會(huì)報(bào)錯(cuò):
select "textcol" from t1@linkname;
ORA-28500: 連接 ORACLE 到非 Oracle 系統(tǒng)時(shí)返回此信息:
[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)
本來(lái)想用datadirect的mysql ODBC試試,可只支持mysql enterprise版本,實(shí)在不好找,以后有機(jī)會(huì)再說(shuō)吧。
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,數(shù)據(jù)庫(kù)已經(jīng)安裝好
mysql:5.1.34-community for windows
二、安裝配置
1. 安裝unixODBC,用root用戶(hù)
rpm -Uvh unixODBC-2.2.12-1.el4s1.1.i386.rpm
2. 安裝mysql ODBC,用root用戶(hù)
rpm -Uvh mysql-connector-odbc-5.1.5-0.i386.rpm
3. 安裝oracle gateway,用oracle用戶(hù)
我裝的是10201_gateways_linux32.zip
unzip 10201_gateways_linux32.zip
cd gateways
./runInstaller
安裝方法和oracle db 軟件一樣,我把gateway和db裝一起了,共用一個(gè)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
測(cè)試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. 重啟監(jiān)聽(tīng)器并測(cè)試
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. 測(cè)試
select "name" from t1@linkname;
三、遺留問(wèn)題
1. 字符集問(wèn)題,最好oracle和mysql是utf8,否則中文有問(wèn)題
2. text字段會(huì)報(bào)錯(cuò):
select "textcol" from t1@linkname;
ORA-28500: 連接 ORACLE 到非 Oracle 系統(tǒng)時(shí)返回此信息:
[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)
本來(lái)想用datadirect的mysql ODBC試試,可只支持mysql enterprise版本,實(shí)在不好找,以后有機(jī)會(huì)再說(shuō)吧。
相關(guān)文章
簡(jiǎn)單講解sql語(yǔ)句中的group by的使用方法
掌握sql語(yǔ)句中g(shù)roup by的使用方法會(huì)對(duì)我們的工作效率有很大的提升,下面小編來(lái)和大家一起簡(jiǎn)單學(xué)習(xí)一下2019-05-05MySQL嵌套查詢(xún)實(shí)現(xiàn)子查詢(xún)的方法
本文主要介紹了MySQL嵌套查詢(xún)實(shí)現(xiàn)子查詢(xún)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02MySQL數(shù)據(jù)庫(kù)case?when?then?end的詳細(xì)使用方法
在SQL語(yǔ)法中我們首先使用CASE關(guān)鍵字開(kāi)頭,然后根據(jù)不同的條件使用WHEN關(guān)鍵字,并在每個(gè)條件后面指定結(jié)果,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)case?when?then?end的詳細(xì)使用方法,需要的朋友可以參考下2023-12-12MySql之授權(quán)用戶(hù)權(quán)限如何設(shè)置
這篇文章主要介紹了MySql之授權(quán)用戶(hù)權(quán)限如何設(shè)置問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05MySQL中datetime和timestamp的區(qū)別及使用詳解
這篇文章主要介紹了MySQL中datetime和timestamp的區(qū)別及使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11