环境 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]