配置Oracle到MySQL透明網關
很多遊戲的數據庫是MySQL的,要想連通,最簡單的辦法就是配置Oracle到MySQL的透明網關了。
去年年底,我在一臺CentOS 5(32位)上配置成功了Oracle到MySQL的透明網關(不過,只能select,不能insert)。現在,需要使用的時候,發現總是配置不成功了,isql無論如何都無法正常的運行,UnixODBC、iODBC,一個一個都試過了,都無法成功。後來查資料,才發現原來hsodbc是一個32位的程序,要求所有的相應lib(包括driver)都是32位的,而現在手頭上居然沒有32位的機器了。
於是,只好申請了一臺退役了的舊機器來做透明網關(聯想,R520),系統Windows Server 2003。
系統安裝好後,第一步安裝Oracle(10.2),安裝完成之後,從MySQL官網下載mysql-connector-odbc-5.1.6-win32.msi,安裝。
進到操作系統數據源管理,添加一個系統DSN(DSN名稱 wps2000 當然,驅動選剛剛配置的 MySQL ODBC 5.1 Driver)。配置好了測試一下。
進到目錄 %ORACLE_HOME%\hs\admin, 新建文件 initwps2000.ora (我的SID叫 wps2000),配置如下:
# This is a sample agent init file that contains the HS parameters that are
# needed for an ODBC Agent.
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = wps2000
HS_FDS_TRACE_LEVEL = 4
HS_FDS_SHAREABLE_NAME = "C:\Program Files\MySQL\Connector ODBC 5.1\myodbc5.dll"
進到目錄 %ORACLE_HOME%\NETWORK\ADMIN ,修改文件 listener.ora 爲:
# listener.ora Network Configuration File: D:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(PROGRAM = hsodbc)
(SID_NAME = wps2000)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = *********** )(PORT = 1521))
)
)
並在最後添加
wps2000 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.140.105)(PORT = 1521))
)
(CONNECT_DATA =
(SID = wps2000)
)
(HS = OK)
)
然後,重啓監聽。
sqlplus / as sysdba,登陸進入Oracle:
create public database link wps2000 connect to "wps2000" identified by "wps2000" using 'wps2000';
select sysdate from dual@wps2000;
萬事Ok,已經正確的從Oracle中透過透明網關連上了MySQL。
注意事項:
MySQL的用戶名和密碼是區分大小寫的,所以必須用雙引號引起來,否則,如果使用
create public database link wps2000 connect to wps2000 identified by "wps2000" using 'wps2000';
建立的db link,使用時會提示:
第 1 行出現錯誤:
ORA-28545: 連接代理時 Net8 診斷到錯誤
Unable to retrieve text of NETWORK/NCR me
ORA-02063: 緊接着 2 lines (起自 WPS2000)
這是一個無敵並且白癡的提示,一起fuck Oracle吧!同時,在 %ORACLE_HOME%\hs\trace 裏可以看到大量 wps2000_agt_****.trc 的調試信息:
Oracle Corporation --- 星期五 6月 25 2010 12:45:35.671
Heterogeneous Agent Release
10.2.0.1.0
HS Agent diagnosed error on initial communication,
probable cause is an error in network administration
Network error 1003: NCR-01003: NCRS: 讀取錯誤。
這又是一個沒有任何意義的調試信息,fuck Oracle again吧
連接:http://hi.baidu.com/zhangsilly/blog/item/62b781161352e615962b4330.html