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