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]

时间: 2024-08-02 00:55:59

ORACLE 透明网关访问 MYSQL 表的相关文章

Oracle SQL Server MySQL查看当前所有数据库表名及其他信息

环境:Oracle 11g + SQLServer 2008 R2 + MySQL 5.1 Oracle: 1. 查看当前库的所有数 据表 select * from all_tables; select table_name from all_tables; select table_name from user_tables; select table_name from all_tables where owner='用户名'; 2. 查看表结构 desc 表名 : SQLServer:

用jsp写的表单用户登录页面,访问mysql数据库时候 出错 ,如下图

问题描述 用jsp写的表单用户登录页面,访问mysql数据库时候 出错 ,如下图 在处理登录的时候为什么有时候出现500错误,有时候又出现找不到数据库连接,我用得mysql数据库,驱动程序也添加了的,求大神指教一下啊! 解决方案 可能数据库没连接上(因为不同数据库版本的驱动不同) 来检查你的数据库是否链接上 在你得到的Connection conn=DriverManager.getConnection(参数); 后面加一段代码 if(conn==null) System.out.println

mysql表如何保证每秒1000次的并发访问速度

问题描述 mysql表如何保证每秒1000次的并发访问速度 我写了个服务,使用Java写的,发布在Tomcat上.发布Tomcat的服务器,如何保证高并发访问? 我是需要提高机器的cpu还是内存呢?MySQL数据库如何设置呢?希望有经验的人给我指点一下,多谢大家. 解决方案 以目前的硬件条件,无论你怎么优化,都不可能在生产环境中做到"每秒1000次的并发访问",除非你拿来做测试的是只有几条数据的表和最简单的查询. 如果你完全不懂负载平衡,读写分离,群集这些概念的话. 解决方案二: 就好

把oracle数据库中的表写到mysql中

问题描述 把oracle数据库中的表写到mysql中 如题,oracle数据库中的表格,完完全全的导入到mysql数据库中,有没有什么简单的方法,不要写程序之类的.有没有大神知道?望指教. 解决方案 移植oracle数据库表结构到mysql数据库分页,Oracle 和 mysql 解决方案二: 这好像有点难吧?有些字段类型名称都不一样 解决方案三: robot已经告诉你了,数据库之间的类型啥的都不一样,不可能完全导入,必须做一些转换才行.

oracle 透明网关(oracle database gateway)介绍

安装过程文档:http://download.csdn.net/detail/changyanmanman/7737563 在企业里,通常可能有多种数据源,并且他们是异构的.所谓的异构就是说他们是不同的产品,例如: Oracle Database, MS SQL Server, IBM DB2, Sybase ASE, MySQL, Postgre SQL, Excel, XML, Txt或者CSV等用于存放数据的产品或者文件.   那么假设我们需要这些异构的数据源同Oracle Databas

ORACLE 索引和MYSQL INNODB 辅助索引对NULL的处理区别

ORACLE 索引和MYSQL INNODB 辅助索引对NULL的处理 我们清楚ORACLE中的b+索引是对键值的NULL进行存储的,以致于我们 IS NULL这种肯定是用不到索引的, 当然这提及的ORACLE表为堆表,索引为单列B+树索引,(有一种优化方式为建立组合索引如create index xx on tab(a,'1') 这样来保证索引记录NULL值 这样DUMP出来为 ..... row#11[7886] flag: ------, lock: 2, len=12 col 0; NU

教你实现MySQL表数据迁移自动化

一.背景 之前我写过关于SQL Server的数据迁移自动化的文章:SQL Server 数据库迁移偏方,在上篇文章中设计了一张临时表,这个临时表记录搬迁的配置信息,用一个存储过程读取这张表进行数据的迁移,再由一个Job进行迭代调用这个存储过程. 在这次MySQL的实战中,我的数据库已经做了4个分片,分布在不同的4台机器上,每台机器上的数据量有1.7亿(1.7*4=6.8亿),占用空间260G(260*4=1040G),这次迁移的目的就是删除掉一些历史记录,减轻数据库压力,有人说这为什么不使用表

Oracle移植到MySQL注意事项

客户用的数据库是mysql,而研发好的产品支持oracle,为了让客户掏腰包,我们必须把数据库环境从oracle转向mysql.我们在转换的过程中碰到了下面一些问题,希望能给同样遭遇的同仁们一些借鉴.如果我们在最初的设计.编码过程中注意数据库的移植性,这种情况下可以完全不需要作额外工作. 一.数据库环境从oracle转向mysql碰到的问题. 因为逻辑不变,所以原则是不改应用程序代码,只改数据库表的创建/初始化sql.下面是我们碰到的问题以及解决办法. 1. 大小写敏感的区别(如果服务器OS是l

用C++库连接Oracle,MS SQL,MySQL等数据库

最近在网上找到一个好东西SQLAPI++,它是可以访问多个SQL数据库(Oracle,SQL Server,DB2,Sybase,Informix,InterBase,SQLBase,MySQL,PostgreSQL)C++库.SQLAPI++直接调用本地目标数据库管理系统(DBMS)的API(不像ADO一样使用OLEDB and/or ODBC中间层).SQLAPI++库扮演了一个中间件以间接方便访问数据库的角色,这就是为什么SQLAPI++是访问数据库最快的方法.在开发和发布您的应用程序时不