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

你可能感兴趣的:(oracle)