网络上使用oracle网关来连接sql server ,db2 ,sybase 等的数据库的实例比较多,唯独少了使用oracle网关来通过ODBC连接的样例,MySql 就是一个ODBC 的。
现在看看如何使用oracle网关连mysql 。
官网文档介绍:http://www.oracle.com/technetwork/cn/database/gateways/index-087505-zhs.html
ORACLE数据库11.2.0.3 操作系统:windows8_64位 http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html
MYSQL 5.6 操作系统:windows8_64位
Oracle Data Gateway 11.2 -------------其实:oracle 在安装的时候已经将getaway安装好了,在安装之前,去安装目录中查看,如果没有安装再去下载安装。
MYSQL ODBC 5.4 (现在没有找到5.6 的版本) 官方的下载地址:https://edelivery.oracle.com/EPD/Search/handle
下载地址:http://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 有很多的版本可以选下载并安装
设置系统变量:
ORACLE_HOME=D:\app\rocky\product\11.2.0\dbhome_1 ,
TNS_ADMIN=%ORACLE_HOME%\NETWORK\ADMIN\,
PATH=D:\app\rocky\product\11.2.0\dbhome_1\bin;D:\app\product\11.2.0\tg_1\bin;......
同样在oracle 的官网中可以找到,一定要找到对应的版本,否则会出现问题的.
在Oracle服务器上,cmd窗口中执行命令(dg4odbc),若有安装则显示如下信息:
C:\Users\Administrator>dg4odbc
一路默认安装完mysql odbc 之后,会有 win8 64 (C:\Windows\System32\odbcad32.exe) 用来对dsn做配置.
(不过很多时候应该选择的是系统DSN,因为很多时候你的用户DSN的权限是有限的,不能提供完美的支撑,所以要根据情况选择系统DSN最合适的是)
双击就可以将进行相应的odbc 的配置了,不多讲,如图所示:。
在"ORACLE_HOME\hs\admin"目录下,默认存在名为"initdg4odbc.ora"的文件,复制"initdg4odbc.ora"文件,新文件名称改为"initmysqlodbc.ora",
【每个使用DG4ODBC的实例,都必须单独一个"init*.ora"文件,文件命名规则:init+<网关sid>+.ora】
HS_FDS_CONNECT_INFO = ODBC数据源管理中的DSN名称【本实验为MYSQLODBC】
HS_FDS_TRACE_LEVEL = OFF 【追踪级别参数,出于性能影响一般不配置或者配置为"OFF",若遇到网关问题需要跟踪日志,则配置为"Debug",跟踪日志文件存放在"ORACLE_HOME\hs\trace"目录下】
本样例中对应填上initmysqlodbc.ora 文件的:
HS_FDS_CONNECT_INFO = mysqlodbc
HS_FDS_TRACE_LEVEL = off
HS_FDS_SUPPORT_STATISTICS=FALSE
HS_RPC_FETCH_REBLOCKING= OFF
HS_FDS_FETCH_ROWS = 1
网关监听可配置的参数如下:SID_NAME 网关的SID
ORACLE_HOME : 目录
PROGRAM : 指定监听服务响应ODBC连接请求的可执行程序
请参考如下或者透明网关的配置:
# listener.ora Network Configuration File: C:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora # Generated by Oracle configuration tools.
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Administrator\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) (SID_DESC = (SID_NAME = MYSQLODBC) (ORACLE_HOME = C:\app\Administrator\product\11.2.0\dbhome_1) (PROGRAM = dg4odbc) ) ) |
在cmd下面运行
lsnrctl stoplsnrctl start |
打开 "ORACLE_HOME\network\admin\tnsnames.ora"文件
需要配置的参数如下:
connect_descriptor:填写自定义的TNS连接名称
ADDRESS:填写透明网关的IP地址和端口
SID:指定连接网关的SID
HS :指定连接的是非ORACLE数据库
connect_descriptor= (DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=host_name) (PORT=port_number) ) (CONNECT_DATA= (SID=gateway_sid)) (HS=OK)) |
本例子配置如下:
MYSQLODBC= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = (本机IP/主机名))(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = MYSQLODBC) ) (HS = OK) ) |
以sqlplus、PLSQL Developer或TOAD连接到OracleDB,执行以下DDL语句创建DBLink
【在"create database link"语句中,用户名和密码,建议以双引号括起来,避免Oracle在大小写上做自动转换】
create database link MYSQLLINK connect to "DEMO" identified by "DEMO" using 'MYSQLODBC'; |
此命令可以网络搜索得到结果。
用sqlplus在服务器上面执行语句,返回如下值表明配置成功
SQL> select * from dual@MYSQLODBC; D - X |
如此基本上的服务都配置完成了,剩下的就是看你怎么样使用oracle 网关了。。。 。。。
说明文档:
http://blog.itpub.net/12679300/viewspace-1177222/
http://www.itpub.net/thread-1845639-1-1.html
http://blog.itpub.net/14710393/viewspace-1082556/
注意点:
1.用户的权限一定要高,否则很可能出现很多不明白的error错误。
2.对应的版本一定要安装好,否则很可能出现很多解决不了的错误,让你一头雾水。
比如一个安装的是32位的,一个却是64 的,这个肯定是要爆的。