oracle使用的11g,在一台windows服务器;mysql使用的是5.7版本,在另一台windows服务器,这两个服务器之间的网络是互通的。做BI时,要获取不同数据源的数据,这些数据源可能是Oracle,也可能是sqlserver、mysql。当使用Oracle作为数仓归集数据时,可以使用专门的ETL工具,从其他类型的数据源获取数据,也可以直接使用Oracle的网关技术+dblink,直连这些非oracle的关系型数据库。
注意:使用这种方式时,会因为个别数据类型不兼容、oracle对标识长度限制等而报错,可以在mysql中建立视图转换解决。
准备
环境
oracle服务器环境:windows server 2012R2 x64、oracle 11.2.0.4
mysql服务器环境:
oracle网关
oracle通过dblink访问非oracle数据库,需要使用oracle的gateway组件。oracle数据库的gateway提供了一种能力,能够从oracle环境透明无障碍地访问在非oracle数据库中的数据。
gateway技术是由两部分组件组成:组件一,使用通用的技术连接非oracle数据库,对于所有非oracle数据库而言,都一样,称之为多样化服务(Heterogeneous Services);组件二,因oracle gateway连接的非oracle数据库的不同而不同。详见下图。使用gateway与odbc驱动,可以访问非oracle数据库,该驱动必须和gateway在同一台机器上。
下载
gateway网关
已被包含在oracle的安装包之中。
odbc驱动
mysql的版本5.7.40,下载对应的ODBC。
https://downloads.mysql.com/archives/c-odbc/
配置
ODBC
如上所示,目前没有mysql odbc驱动,安装下载的odbc即可。
安装odbc时,可以使用默认设置,一直下一步,直至安装完成。
安装完后,沿着之前的路径,打开odbc配置界面
测试成功,保存。
gateway
检查确认是否已经安装gateway,cmd启动命令行,输入db4odbc或hsodbc,查看是否已经安装。如下图所示,说明已经安装。
按照路径E:\app\Administrator\product\11.2.0\dbhome_2\hs\admin,找到initdg4odbc.ora文件,将该文件复制出来,改名为initodbc_ ,本实验中是initdg4odbc_bpm.ora。
注意:每个使用dg4odbc的实例,都必须单独一个”init*.ora”文件,文件命名规则:init+<网关sid>+.ora
HS_FDS_CONNECT_INFO = ODBC数据源管理中的DSN名称【本实验为bpmds】HS_FDS_TRACE_LEVEL = OFF 【追踪级别参数,出于性能影响一般不配置或者配置为"OFF",若遇到网关问题需要跟踪日志,则配置为"Debug",跟踪日志文件存放在"ORACLE_HOME\hs\trace"目录下】
在路径:E:\app\Administrator\product\11.2.0\dbhome_2\NETWORK\ADMIN,找到监听文件,并调整。
重启监听
提示:监听是动态注册,稍后就能看到orcl
创建dblink,测试。mysql用户密码必须双引号,host是oracle服务器ip,port是oracle端口。
测试效果