从ORACLE到SQL SERVER的透明网关的安装和配置

最近项目中需要用到在ORACLE的存储过程里访问SQL SERVER数据库中的几张表,就用到了DBLINK。这里就写几个字记录一下自己的配置步骤和遇到的坑:

第一步:准备

1:oracle数据库

IP地址:10.201.81.13

ORACLE根目录:D:\product\11.2.0\dbhome_1

ORACLE端口:1521

2:ORACLE getway11(透明网关,这个要和ORACLE数据库的版本一致)

IP地址:10.201.81.13

gateway11根目录:D:\product\11.2.0\tg_1

gateway端口:1522

3:SQL SERVER2012

IP地址:192.168.83.24

数据库名:JZJY

用户名:ls

密码:ls123

第二部:安装透明网关

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


从ORACLE到SQL SERVER的透明网关的安装和配置_第1张图片


2:安装目录选择和ORACLE一致

从ORACLE到SQL SERVER的透明网关的安装和配置_第2张图片

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

从ORACLE到SQL SERVER的透明网关的安装和配置_第3张图片

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

从ORACLE到SQL SERVER的透明网关的安装和配置_第4张图片

5:开始安装

从ORACLE到SQL SERVER的透明网关的安装和配置_第5张图片

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

第三步:透明网关配置

1:来到D:\product\11.2.0\tg_1\dg4msql\admin目录下

这个目录下可以看到以下initdg4msql.ora文件,上面在安装透明网关的时候有配置的要链接SQL SERVER数据的地址和数据库名称,在这里都可以体现:

HS_FDS_CONNECT_INFO= "192.168.81.13:1433//JZJY"
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,为了方便辨认,这里把文件名修改为initjzjy.ora。此时的SID是jzjy.


2:配置透明网关的监听,来到D:\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 =
     (PROGRAM = dg4msql)
     (SID_NAME = jzjy)
     (ORACLE_HOME = D:\product\11.2.0\tg_1)
    )
  )
 
    
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.201.81.13)(PORT = 1522))
    )
  )
 
ADR_BASE_LISTENER = D:\product\11.2.0\tg_1
这里需要注意的主要是一下几点:
  • PROGRAM为dg4msql:因为实例的配置文件在dg4msql目录下,就是上面的initjzjy.ora文件所在的目录
  • SID_NAME为jzjy:这个sid就是上面的文件名中的sid,initjzjy.ora的sid为jzjy
  • ORACLE_HOME就是我们透明网关的安装目录
  • ORACLE的监听端口是1521,我的oracle和透明网关是安装在同一台机器上的,所以透明网关的监听端口设置为1522。
  • 一个initSID.ora文件就对应一个SID_DESC,可以根据想要链接的数据库来配置。

3:启动透明网关的监听

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


4:配置tns信息,来到D:\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
jzjy =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =110.201.81.13)(PORT = 1522))
    (CONNECT_DATA=(SID=jzjy))
    (HS=OK)
  )
这里需要注意的有以下几点:
  • 第一个jzjy名字前一定不能有空格,要紧挨左边;
  • address就是透明网关的地址,端口是透明网关的监听端口;
  • sid=jzjy:这个jzjy就是透明网关dg4msql目录下的initSID.ora中的sid;
  • (hs=ok):这个很重要,你会发现之前配的一些实例没有,这是因为了表示这是外部程序,而不是oracle数据库实例。

5:测试tns
重启oracle监听服务和透明网关服务后在命令行输入:tnsping jzjy。如果出现下面的就表示成功
TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 22-11月-
2017 16:29:14

Copyright (c) 1997, 2010, Oracle.  All rights reserved.

已使用的参数文件:
D:\product\11.2.0\dbhome_1\network\admin\sqlnet.ora

已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.201.81.13)(PORT =
1522)) (CONNECT_DATA = (SID = jzjy)) (HS = OK))
OK (30 毫秒)

C:\Users\Administrator>

6:建立DBLINK
在plsql登录oracle客户端执行sql:
create public database link dblink_test connect to "ls" identified by "ls123" using 'jzjy';
  • public的意思是其他的用户也能使用这个dblink;
  • dblink_test就是我们创建的dblink名字;
  • “ls”和“ls123”分别是目标sql server数据库的登录名和密码,在创建dblink的时候这两个字段一定要加双引号;
  • jzjy就是我们在配置tns的那个名称:jzjy=....的那串串

7:测试dblink是否
可以执行sql:select 1 from tableName@dblink_test看是否有查询结果。这里的tableName就是目标sql server的一张已知表名,@后面接dblink名称

第四步:记录下自己遇到的问题和解决方法

问题1:配置完透明网关后,就是起不来监听,每次启动的时候就自己停止了
造成原因:暂时还不知道
解决办法:重启服务器,监听就顺利启动了。。。。。。


你可能感兴趣的:(数据库)