使用透明网关实现oracle访问sqlserver
在项目上有跨库访问异构数据库的需求,通常是运行在oracle上的his系统,访问运行在sql server上的lis等系统,异构数据库的跨库访问需要使用透明网关。以下介绍透明网关gateway的安装和配置。
复制粘贴的时候图片都裂开了,懒的一个个上传了,文档获取地址:https://download.csdn.net/download/qq_36815190/87473980
gateway安装
首先是需要gateway的安装包,windows平台的安装包win32_11gR2_gateways.zip,linux平台的安装包为p13390677_112040_Linux-x86-64_5of7.zip,linux系统安装透明网关需要图形化桌面(静默安装容易出错)。各平台的安装方式大同小异,windows上的相对简单。
1、解压后的目录,打开setup.exe,弹出安装界面。Linux则需要运行./ runInstaller弹出图形界面。
2、指定HOME名称和路径(如果机器上没有oracle一般不需要修改,有oracle或者其他oracle产品可能会提示重复,需要修改名称和路径)
3、在安装过程中需要选择for sql server的选项
4、输入sqlserver的数据库信息(一般输入ip地址,防止没有dns解析,sqlserver的数据库名称,有的版本还需要输入端口号,一般sqlserver的默认端口是1433)
5、检查安装信息后就可以安装了
6、安装过程(在linux平台中,会弹出对话窗口,需要使用root执行两个脚本,执行完成后再回到图形界面确认就可以了)
7、安装完成会弹出配置监听的窗口(可以配置,也可以取消后后面手动配置,或者对已有oracle服务的机器可以使用oracle的监听程序)
8、开始配置监听
指定监听名称(一般默认,除非已存在同名监听或者需要更改其他监听名称)
选择协议
配置端口号(一般默认是1521,特别注意如果存已在1521端口,需要指定其他端口创建监听。)
是否还需要配置一个监听
提示监听配置完成
是否配置其他的命名方法
监听配置完成
gateway配置
一个ORACLE如果配置多个透明网关信息,则不需要安装多次网关软件,只需要安装一次,然后配置多个$ORACLE_HOME/dg4msql/admin/init网关SID.ora文件并新增多个静态监听和tns指向网关SID即可,Sqlserver用户名和密码只在oracle创建dblink时用得上。
首先修改$ORACLE_HOME/dg4msql/admin/下的配置文件,默认的配置文件是initdg4msql.ora。内容为前面安装的时候指定的信息。包含ip地址、(端口)、数据库名称。
文件内容如下:
然后修改监听文件$ORACLE_HOME/network/admin/listener.ora,配置静态监听,如果各项配置都是默认的话,可以参考$ORACLE_HOME/dg4msql/admin/目录里listener.ora.sample样例文件内容。监听修改完成后需要重启一下。
最后配置$ORACLE_HOME/network/admin/tnsnames.ora文件,并使用tnsping命令测试是否可以通。tnsnames.ora文件也可以参考$ORACLE_HOME/dg4msql/admin/目录里的tnsnames.ora.sample的样例文件,因为是异构的数据库所以需要加上HS=ok的参数,注意所有的host都最好改正为对应的ip地址,否则可能存在解析问题。
透明网关就配置好了,接下来需要使用透明网关创建dblink访问sqlserver。
创建dblink
透明网关配置好了,就可以在oracle平台的his库上创建dblink就可以访问sqlserver的lis数据库了。需要使用可以访问lis数据库的账号和密码,这里为了方便创建了一个叫rmlis6的dblink,访问lis的用户名密码都是LZHIS。
create public database link rmlis6
connect toLZHIS identified by LZHIS
using'(DESCRIPTION =
(ADDRESS =(PROTOCOL = TCP)(HOST =192.168.1.200)(PORT = 1521))
(CONNECT_DATA=(SID=dg4msql))
(HS=OK)
)';
然后使用dblink访问lis数据库的表,如果没有报错并且返回结果则测试访问成功。
select count(*) from l_testdescribe@rmlis6;