Oracle 11g透明网关连接Sqlserver

时间:2022-01-29 07:45:57

1、扯扯前奏

  记的2017年的五一假期,在享受假期的同时突发奇想,Oracle中怎么能查到SQL Server的数据,当时也百度了好多,搞了应该也有一天的时间吧,安装了Oracle透明网关以后却没能连上SQL Server,后来也就搁浅了,现在是2018年12月4日,在这个项目了支援了快两个月了,感觉可能会用到这块,今天就凑时间了测试了下;不得不说今天的运气还是挺好的。 

2、不得不说的来龙去脉

  oracle 透明网关是oracle连接异构数据库提供的一种技术。通过Gateways,可以在Oracle里透明的访问其他不同的数据库,如SQL Server, DB2, Sybase等等,就像远程Oracle数据库一样。

Oracle 11g透明网关连接Sqlserver

3、按图就办

  备注:当时安装时没有截图,图片是在网上找的,不过内容是对的。

 3.1 解压透明网关的压缩包,点击setup.exe安装

  Oracle 11g透明网关连接Sqlserver 

 3.2 安装目录选择和ORACLE一致

  Oracle 11g透明网关连接Sqlserver

 3.3 选择组件,因为要链接到SQL SERVER

  Oracle 11g透明网关连接Sqlserver

 3.4 填写SQL SERVER的主机名和数据库名称

  Oracle 11g透明网关连接Sqlserver

 3.5 开始安装

  Oracle 11g透明网关连接Sqlserver

 3.6 安装完成后就退出了,因为监听要手动配置。

4、配置透明网关

  4.1 在D:\app\product\11.2.0\tg_2\dg4msql\admin目录下,个人安装的路径,因人而异。这个目录下可以看到以下initdg4msql.ora文件,上面在安装透明网关时有配置链接SQL SERVER数据的地址和数据库名称,在这里都可以体现。

HS_FDS_CONNECT_INFO=127.0.0.1:1433//Test
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

  检查一下HS_FDS_CONNECT_INFO是否是我们想要链接的地址,格式为:目标数据库的IP地址:端口//数据库名。SQL SERVER的默认端口是1433。这个文件名也比较有讲究。格式为initSID.ora。现在这个文件名是initdg4msql.ora。

 4.2 配置透明网关的监听,D:\app\product\11.2.0\tg_2\NETWORK\ADMIN\listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
    )
  )
  
SID_LIST_LISTENER=
  (SID_LIST=
      (SID_DESC=
         (SID_NAME=dg4msql)
         (ORACLE_HOME=D:\app\product\11.2.0\tg_2)
         (PROGRAM=dg4msql)
      )
  ) 

ADR_BASE_LISTENER = D:\app\product\11.2.0\tg_2

 这里需要注意的主要是一下几点:

    PROGRAMdg4msql:因为实例的配置文件在dg4msql目录下,就是上面的initdg4msql.ora文件所在的目录

    SID_NAMEdg4msql:这个sid就是上面的文件名中的sidinitdg4msql.orasiddg4msql

    ORACLE_HOME就是我们透明网关的安装目录

    ORACLE的监听端口是1522,我的oracle和透明网关是安装在自己的电脑上,所以透明网关的监听端口设置为1522

    一个initSID.ora文件就对应一个SID_DESC,可以根据想要链接的数据库来配置。

 4.3 启动透明网关的监听

  在命令行执行lsnrctl start,或者直接去服务那启动监听OracleOraGtw11g_home1TNSListener,这个服务名根据具体而定,每人可能不太一样。服务启动好了就OK。

 4.4 配置tns信息,来到D:\app\Administrator\Home\product\11.2.0\dbhome_1\NETWORK\ADMIN 

#透明网关 
dg4msql =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1522))
    )
    (CONNECT_DATA =
      (sid = dg4msql)
    )
    (HS = OK)
  )

 4.5 测试tns

  重启oracle监听服务和透明网关服务后在命令行输入:tnsping dg4msql。

 4.6 建立DBLINK

create database link LOCALSQL          
           connect to "sa" identified by "qweasd"
           using '( DESCRIPTION =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1433))   
                (CONNECT_DATA = (
                SID = Test ) )   
                (HS=OK ))';

 4.7 查询实例

  Oracle 11g透明网关连接Sqlserver