首页 / 数据库 / MySQL / Oracle 透明网关访问 MySQL 表
环境 LINUX 64 BIT Oracle 11.2.0.4 LINUX 64 BIT MYSQL 5.7.14 1、 MYSQL建立一个用户用于ORACLE DBLINK 建立这里忽略掉 2、 11gR2 默认安装了透明网关检查一下 [orared@roseha1 ~]$ dg4odbc Oracle Corporation --- WEDNESDAY NOV 09 2016 15:51:46.233 Heterogeneous Agent Release 11.2.0.4.0 - 64bit Production Built with Oracle Database Gateway for ODBC dg4odbc 是database gateway for odbc 的简称 3、安装 MYSQL-connector yum install mysql-connector-odbc.x86_64 这样会安装一些依赖包主要是 mysql-connector*.x86_64.rpm unixODBC*.x86_64.rpm unixODBC*.i386.rpm 这里包含了一些需要的库文件 4、配置odbc配置信息 默认就在/etc/下建立odbc.ini 我这里配置如下: # Setup from the unixODBC64-libs package [rmt] #连接名 Driver = /usr/lib64/libmyodbc3.so #驱动 Server = 192.168.0.150 #mysql服务器ip Port = 3306 #MYSQL端口 User = 156read #建立的MYSQL用户 Password = test123 #密码 Database = test #访问的数据 5、测试一下 [root@roseha1 etc]# isql rmt +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ 成功 接下来配置oracle的相关配置 6、进入如下目录: [orared@roseha1 admin]$ pwd /home/orared/product/11.2.4/hs/admin 建立配置文件格式为init<sid>.ora这个sid就是 listener中配置的sid,我这里打开了trace,正式使用需要关系 trace日志在/home/orared/product/11.2.4/hs/log用于排错 [orared@roseha1 admin]$ more initrmt.ora HS_FDS_CONNECT_INFO=rmt # Data source name in odbc.ini HS_FDS_TRACE_LEVEL= debug HS_FDS_SHAREABLE_NAME=libodbc.so HS_FDS_SUPPORT_STATISTICS=FALSE HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P15 # # ODBC env variables set ODBCINI=/etc/odbc.ini HS_FDS_SHAREABLE_NAME=libodbc.so这里一定要注意不是 Driver = /usr/lib64/libmyodbc3.so 中的库文件 7、配置监听 我这里为了不影响现有的监听新建了一个监听LISTENER2 配置如下: LISTENER2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = roseha1)(PORT = 1523)) ) SID_LIST_LISTENER2 = (SID_DESC = (SID_NAME = rmt) (ORACLE_HOME = /home/orared/product/11.2.4) (PROGRAM = dg4odbc) (ENVS=LD_LIBRARY_PATH=/usr/lib64:/usr/lib:/home/orared/product/11.2.4/lib:/home/orared/product/11.2.4/odbc/lib) ) 8、配置TNSNEAMS.ORA 我这里配置如下注意HS=OK不能少 rmt_150_mysql = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = roseha1 )(PORT = 1523)) ) (CONNECT_DATA = (SID = rmt) ) (HS = OK) ) 9、建立DBlink create database link rmt_150_mysql connect to "156read" identified by "test123" using "rmt_150_mysql"; 10、查询数据 select "status" from "test"@RMT_150_MYSQL; 默认情况下LINUX的MYSQL 表名和数据库名是区分大小写的,因为LINUX本身是一个 文件名区分大小的文件系统,但是ORCALE的表名是不区分大小的的。但是字段 MYSQL和ORACLE都不区分大小写。 如果不加上双引号会出现找到表和列。 配置过程遇到一些错误,但是打开 HS_FDS_TRACE_LEVEL = debug 能够很好的找到错误来源,然后解决。 oracle——dg4odbc ——odbc ——mysql 可以参考:Detailed Overview of Connecting Oracle to MySQL Using DG4ODBC DatabaseLink [ID 1320645.1] 更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址
收藏该网址