需求:通过在oracle创建dblink的方式直接访问Sqlserver数据库

操作方式:利用Oracle组件,透明网关( Transparent Gateway ),建立dblink ,访问SQL SERVER
1.首先在官网上先下载个透明网关。网址(11g):


2.将gateway安装在Oracle相同的目录下:
[透明网关目录:D:\app\HIS_LK\product\11.2.0\tg_1\]
[Oracle目录:D:\app\HIS_LK\product\11.2.0\dbhome_1]
安装完Gateway软件后,在ORACLE_HOME目录下有一下dg4msql的目录,
在dg4msql/admin目录下有一个initdg4msql.ora的文件,修改首行:
HS_FDS_CONNECT_INFO=192.168.0.164:1433//MSSQLSERVER/A
(修改内容为Sqlserver的服务器IP,实例,数据库名)

3.修改Oracle监听文件
编辑%ORACLE_HOME%\network\admin\listener.ora
文件分成两部分:SID_LIST_LISTENER和LISTENER 
SID_LIST_LISTENER为监听SID的清单,LISTENER为监听主机的信息(IP地址和端口号的设定)
--------------------------------------------------------------------
LISTENER =                                         
(ADDRESS_LIST=
(ADDRESS(PROTOCOL=TCP)(HOST=PC201503031320)(PORT=1521))
(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))
)
--添加gateway的监听
SID_LIST_LISTENER =      
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = dg4msql)
      (ORACLE_HOME = D:\app\oracle\product\11.2.0\dbhome_1) --gateway安装路径
      (PROGRAM = dg4msql)   ----此处PROGRAM对应TNSNAMES中的dg4msql
    )
  )
--------------------------------------------------------
配置完以上,重新启动监听应该可以看到相应的服务名,在cmd里面输入:lsnrctl status

4.配置TNS文件
修改Oracle主目录下network\admin目录下的tnsnames.ora
dg4msql  =          ---同上对应
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.190)(PORT=1521))
    (CONNECT_DATA=(SID=dg4msql))
    (HS=OK)
  ) 
配置tns文件,在命令行窗口执行tnsping dg4msql测试是否连通

5. 创建dblink
create database link dg4msql connect to "sa" identified by "Ugsg1234"  using 'dg4msql' ;

在Oracle中,直接查询Sqlserver中的表即可:
select * from DIM_GHKS@dg4msql;

以上,可以实现在Oracle中直接访问Sqlserver数据库,但是表字段类型不兼容的情况下,还是会显示乱码,如果要直接操作数据交换,需要考虑字段类型兼容转换问题。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐