oracle 服务器:AIX 6.1,oracle11g r2,ip :192.168.1.1
sqlserver服务器:windows2003 , ms sql server2000 ip:192.168.1.4
mysql 服务器:windows2003 ,mysql5 , ip:192.168.1.6
2.需求在oracle中访问sqlserver及mysql,进行数据同步,单向从sql同步到oracle,只有select,没有update
3.解决方法采用oracle的gateway,在9i中叫transparent gateway(透明网关),现在统一叫gateway。
具体如下图,可以看到11g的gateway有专门for sqlserver/informix/sybase的,但是没有for mysql的,所以mysql只能用for odbc的方式转接下实现。
做法:决定搭建专用的中间服务器(win2003 ,ip:192.168.1.2 ),用来运行oracle gateway。
这样做至少有几大好处:1.不动数据库服务器,不用担心影响其他应用。2.支持扩展及迁移,可以看到gateway for odbc方式扩展性非常强,只要ODBC能连接的数据库都可以连接,例如excel,access,sqlserver,甚至是其他oracle,当然包括本例中的mysql;3.跨版本连接,例如数据库是11g,gateway可以是9i,避免很多复杂的问题。
4.原理数据逻辑如下:oracle client – oracle server – gateway – sqlserver/mysql,从上面的逻辑也基本上可以推断出需要修改的地方。
区别在于sqlserver在中间层是直接调用sqlserver本身的驱动访问,而mysql是通过odbc访问。
5.安装oracle database gateway for odbc — 直接集成在oracle 服务器端中,到官网选择服务器端下载,安装时默认选企业版安装,即可自动安装上该模块(同时鄙视下oracle 11g r2的安装设定,以前的高级安装没有了,只有企业版、标准、个人版之类,定制选择也不像以前可以完全定制,所以只好把oracle装上,然后把服务禁掉)。验证方式:查看oracle安装目录下是否有hs目录,例如:C:\app\Administrator\product\11.2.0\dbhome_1\hs
oracle database gateway for sqlserver — 需要单独下载,在oracle官网中有下述一行提示。
- See All, page contains unzip instructions plus Database Client, Gateways, Grid Infrastructure, more
鄙视下oracle,这个设置给我折磨近2小时,oracle自带的电子书、百度、google一顿查,后来总算受别人启发,上官网仔细挨个看了看,发现了这个坑爹的设定,所以gateways是一个500多M的单独文件。
前面都写完,下次再总结oracle gateway的具体配置方法。