可以结合参考
Oracle 通过网关连接MySql的配置_oracle21c 网关 配置mysql-CSDN博客 来看本文档
一、说明
1、服务器现状
服务器 A :win 64 ,IP : 192.X.X.X ,已经安装ORACLE 11g 和 client 11g。
实例orcl,用户test,密码123456
服务器B:win 32位 ,192.168.X,X,装有mysql。
数据库 test,用户 test1,密码123456
2、需求
在 A上通过安装配置,实现 plsql 可以通过dblink 连接B的mysql,实现 在oracle中对mysql的数据 进行 增删改查等操作。
3、以下都是在A服务器上进行的操作。
4、网上资料说需要安装 oracle getaway 透明网关,但是现在一般在安装ORACLE 11g数据库都是带有的,不需要另外进行安装,这里只要安装dg4odbc驱动,进行配置即可实现。
5、原理简单说明:使用 oracle网关来通过ODBC连接MySQL。 ( MySQL是一个ODBC )
二、操作
1、安装DG4ODBC驱动
A是64位,下载64位的驱动,我使用的 是
(这个可以复制下来进行安装),可以自行下载其他版本 。
没有安装前如下图,没有对应mysql的驱动。
win8 64 (C:\Windows\System32\odbcad32.exe)
2、解压后,安装 mysql-connector-odbc-commercial-5.3.3-winx64.msi 文件,默认安装即可
安装过程有报错的,可以从软件管家安装 微软常用运行库合集 64位_2018.7.30
3、安装后,可以查看已经有了驱动
win8 64 (C:\Windows\System32\odbcad32.exe)
在Oracle服务器上,cmd窗口中执行命令(dg4odbc),表示已经安装成功
4、odbc 的配置
选择,系统DSN--添加—mysql odbc 5.3 ANSI Driver。(参考上图)
进行对应配置 名称 mysqlodbc
点击 按钮 Test,测试 是否连接成功。
5、透明网关的配置
在" ..\product\11.2.0\dbhome_1\hs\admin"目录下,默认存在名为"initdg4odbc.ora"的文件,复制"initdg4odbc.ora"文件,新文件名称改为"initmysqlodbc.ora",
【每个使用DG4ODBC的实例,都必须单独一个"init*.ora"文件,文件命名规则:init+<网关sid>+.ora】
最终我配置是
HS_FDS_CONNECT_INFO = mysqlodbc
HS_FDS_TRACE_LEVEL = off
6、配置网关监听listener.ora
…\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
加上这段
#以下是透明网关的设置
(SID_DESC =
(SID_NAME = mysqlodbc ) # 对应以上的配置名
(ORACLE_HOME =D:\app\dell\product\11.2.0\dbhome_1)
(PROGRAM = dg4odbc ) # 固定
)
7、配置TNS
打开 " ….\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora"文件
这个服务名 ,是下面创建link使用的 服务
mysqlodbc =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 106-pc)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = mysqlodbc) # 这个是上面的SID_NAME = mysqlodbc
)
(HS = OK)
)
8、重启监听服务
命令重启监听
lsnrctl stop
lsnrctl start
或者手动去 停止\启动
9、配置DBLINK
以sqlplus、PLSQL Developer或TOAD连接到OracleDB,执行以下DDL语句创建DBLink
【在"create database link"语句中,用户名和密码,建议以双引号括起来,避免Oracle在大小写上做自动转换】
我这里使用plsql来执行
create database link mysqlodbc connect to "test1"
identified by "123456" using 'mysqlodbc';
具体意思如下:
create public database link mysqlodbc connect to "test1" identified by "123456"
using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = localhost) (PORT =1521) )
(CONNECT_DATA = (SID = mysqlodbc ))
(HS=OK))';
测试查询mysql里的tbopcs表: select * from tbopcs@mysqlodbc ;
注意:最后测试时,将监听和oracle service 都重启下测试,看配置是否影响到plsql 对oracle 原来的连接