核心是使用透明网关进行实现
环境信息:
Oracle11g:
ip:47.94.102.147 端口:1521
Sql Server 2012 :
ip:106.54.226.253 端口:1433
用户名:SA
要链接的数据库名称:CodeFirstDb
透明网关:Oracle gateway11
Ip:106.54.226.253 端口:1521
SID:CodeFirstDb
注意:1 透明网关要安装在Sql Server端,网上有很多博客的都是安装在Oracle端,我折腾了好久都没有成功
2 电脑一定要保证端口1521开放(即允许入站和出站),不然会配置到你怀疑人生,由于我的测试环境是: 安装sql server的是腾讯云服务器、安装Oracle是阿里云的服务器,腾讯云的端口忘记开了,所以折腾了好久,故一定要保证1521端口开放,文章中会有提及
一 安装透明网关
1 下载透明网关,下载地址:
链接:https://pan.baidu.com/s/1W6rEww1_NxxsMXYi0BOKPQ
提取码:sac2
或者:
链接:https://pan.baidu.com/s/14i3eR5qoqr-BNKRR0mGQ2Q
提取码:b5zv
或:
http://download.oracle.com/otn/linux/oracle11g/R2/linux.x64_11gR2_gateways.zip
2 解压下载的透明网关,并找到压缩包内的exe文件待安装,如下图:
3 安装的具体步骤如下:
设置安装目录,并记住改目录,如下图:
安装sql server组件,如下图:
设置sql server 的ip地址和要链接sql server那个数据库的名称,如下图:
由于要手工配置,所以上图完毕后,会弹出下图的配置对话框,点击取消
后面提示的警告框一律点取消
二 配置透明网关
1 来到透明网关的安装目录:C:\product\11.2.0\tg_1\dg4msql\admin,并找到改目录下的配置文件initdg4msql.ora,由于我们这里要改服务名(SID)为CodeFirstDb,方便知道是链接到那个数据库,所以把配置文件initdg4msql.ora的名称改为initCodeFirstDb.ora,并打开改配置文件如下:
配置格式为:格式是:[hostname:port]/serverinstance/databasename,当然有些可以省略,由于刚才在安装透明网关时已经配过了,这里就不用再配置了
2 在目录下透明网关的安装目录:C:\product\11.2.0\tg_1\NETWORK\ADMIN并新建配置文件listener.ora,并配置如下:
为了方便复制,该文件的内容为:
# listener.ora Network Configuration File: D:\product\11.2.0\tg_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = CodeFirstDb)
(PROGRAM = dg4msql)
(SID_NAME = CodeFirstDb)
(ORACLE_HOME = C:\product\11.2.0\tg_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =172.17.0.16)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = C:\product\11.2.0\tg_1
3 启动透明网关监听(为了保证关机后下次开机还能使用,要设置后台服务OracleOraGtw11g_home1TNSListener自启动,已经自启动的忽略)
使用lsnrctl start,如下图:
三 Oracle数据库端的配置
1 找到Oracle的安装目录
可以查询注册表,找到有Oracle字样的,如下图:
故可知Oracle的安装路径为:C:\app\Administrator\product\11.2.0\dbhome_1
2 在目录下C:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN找到配置文件tnsnames.ora,并新增配置如下:
为了方便复制,新增的内容为:
CodeFirstDb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =106.54.226.253)(PORT = 1521))
(CONNECT_DATA=(SID=CodeFirstDb))
(HS=OK)
)
3 测试是否配置成功:
tnsping CodeFirstDb
如下图:
注意:一定要保证两台机器的1521端口都开放
由于我的腾讯云服务器的端口1521没有开放,就在这里折腾了好久,开放腾讯云的1521端口如下图:
四 配置oracle 到sql server的链接服务器:
sql为:
create database link DBLink名称
connect to SQL Server账户 identified by "SQL Server密码"
using 'SID';
如:
最终效果如下图:
oracle中查询:
sql server中查询:
好了,文章到此结束
参考文章:https://www.cnblogs.com/chenyanbin/p/11291752.html(把透明网关与Oracle安装在一起,不过我按照博主的步骤没有成功,可以参考一下)
https://www.cnblogs.com/xqzt/p/5688659.html
额外送的,比较好使的命令
1 重启监听:
lsnrctl reload
特别是在改了配置文件后有用,如下图:
2 查看监听的情况:
lsnrctl status
3 不想手动配置上面的配置文件,也可以通过界面的方式,两个工具可以了解一下: