配置Oracle到MySQL透明網關

配置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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章