您的位置:首页 > 数据库 > Oracle

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

2017-11-22 16:56 393 查看
最近项目中需要用到在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安装



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



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



4:填写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
a9a4

重启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:配置完透明网关后,就是起不来监听,每次启动的时候就自己停止了
造成原因:暂时还不知道
解决办法:重启服务器,监听就顺利启动了。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息