http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-linx8664soft-100572.html 里面有下载 gateway 的
( 2 )云盘链接: http://pan.baidu.com/s/1nv8Qnpv 密码: 3u3g
2 、安装在 Oracle 服务器上安装 gateway ( 11gR2 gateway 是单独的安装包: 11.2.0.4.0x64 是第五个安装包), 下载下来是linux.x64_11gR2_gateways.zip这样一个压缩包,安装的时候和安装oracle软件一样,通过vnc viewer远程连接进去,解压缩,然后点击./runInstaller进行安装,主要步骤如下所示:
unzip linux.x64_11gR2_gateways.zip
cd gateways
export DISPLAY=192.168.121.90:1
xhost +
(如果报 xhost: unable to open display “192.168.121.90” 的提示,则换成如下命令
export DISPLAY= localhost:1
xhost +
)
su oracle
cd/oracle/gateways/gateways/
./runInstaller
(接下来就是图形化桌面安装窗口演示部分E:\u\oracle\install\pic\*.png):
![[原]ORACLE 通过gateway组件建立dblink连接sqlserver数据库的实战详细过程](http://www.codesec.net/app_attach/201610/06/20161006_419_479403_0.png!web)
![[原]ORACLE 通过gateway组件建立dblink连接sqlserver数据库的实战详细过程](http://www.codesec.net/app_attach/201610/06/20161006_419_479403_1.png!web)
![[原]ORACLE 通过gateway组件建立dblink连接sqlserver数据库的实战详细过程](http://www.codesec.net/app_attach/201610/06/20161006_419_479403_2.png!web)
![[原]ORACLE 通过gateway组件建立dblink连接sqlserver数据库的实战详细过程](http://www.codesec.net/app_attach/201610/06/20161006_419_479403_3.png!web)
![[原]ORACLE 通过gateway组件建立dblink连接sqlserver数据库的实战详细过程](http://www.codesec.net/app_attach/201610/06/20161006_419_479403_4.png!web)
![[原]ORACLE 通过gateway组件建立dblink连接sqlserver数据库的实战详细过程](http://www.codesec.net/app_attach/201610/06/20161006_419_479403_5.png!web)
![[原]ORACLE 通过gateway组件建立dblink连接sqlserver数据库的实战详细过程](http://www.codesec.net/app_attach/201610/06/20161006_419_479403_6.png!web)
3 、配置
安装后在会 ORACLE_HOME 下生成 dg4msql 目录 ,
( 1 )修改 initdg4msql.ora
(2)修改$ORACLE_HOME/network/admin下的tnsnames.ora和listener.ora,添加sqlserver实例信息
[oracle@hch_test_121_90 admin]$ vim listener.oraSID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = dg4msql) # 此处为配置文件 SID ,要与 init dg4msql .ora 中的名字对应
(ORACLE_HOME = /home/oracle /app/oracle/product/11.2.0/dbhome_1)
(PROGRAM = dg4msql) # 此处为配置文件目录名称, $ORACLE_HOME/ dg4msql /admin/initdg4msql.ora
)
(SID_DESC =
(SID_NAME = powerdes)
(ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.90)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
ADR_BASE_LISTENER = /home/oracle/app/oracle
当然如果想让网关监听信息不用 1521 端口也可以如下实验 1522 端口
LISTENER_getways =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.90)(PORT = 1522))
)
)
SID_LIST_LISTENER_getways =
(SID_LIST =
(SID_DESC=
(SID_NAME = dg4msql)
(ORACLE_HOME =/home/oracle /app/oracle/product/11.2.0/dbhome_1)
(PROGRAM = dg4msql)
)
)
[oracle@hch_test_121_90 admin]$ vim tnsnames.ora(SERVER = DEDICATED)
(SERVICE_NAME = powerdes)
)
)
dg4msql =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.90)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dg4msql)
)
(HS = OK) # 此处表示连接的非 oracle 数据库
)
PD12190 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.90)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = powerdes)
)
)
LISTENER_POWERDES =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.90)(PORT = 1521))
测试一下:
[oracle@hch_test_121_90 admin]$ tnsping dg4msqlTNS Ping Utility for Linux: Version 11.2.0.1.0 - Production on 26-SEP-2016 21:10:26
Copyright (c) 1997, 2009, Oracle. All rights reserved.
Used parameter files:
/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.121.90)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = dg4msql)) (HS = OK))
OK (20 msec)
[oracle@hch_test_121_90 admin]$ 4 、在 oracle 服务器上创建 dblinkPS :事先需要保证远程的 sqlserver 数据库是正常运行的。
先建立连接sqlserver的dblink:
# 先分配用户创建 db link 的权限
SQL> grant create database link to dw;
Grant succeeded.
SQL>
# 然后使用 dw 用户登录创建 db link :
createdatabaselink tg4msql connecttosaidentifiedby “ ipva@07 ”
using'(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.121.90)(PORT=1521))
)
(CONNECT_DATA=
(SID=dg4msql)
)
(HS=OK)
)';
然后用 dw 帐号连接 oracle 数据库,在 oracle 中通过 dblink 执行查询功能,证明从 oracle 建立到 sqlserver 的 dblink 成功了:
SQL> select * from Dict_City@tg4msql2 where rownum < 5;
city_id province_id CityResCode
---------- ----------- ----------------------------------------
CityNote Status CreateTime ModifyTime
---------------------------------------- ---------- ------------ ------------
DeleteTime WeatherDate
------------ ------------
2 1 1_Beijing
SP2-0784: Invalid or incomplete character beginning 0xAC returned
242 2 2_Chang Le NP 1 05-FEB-12 05-FEB-12
159 2 2_Fu An
SP2-0784: Invalid or incomplete character beginning 0x89 returned
158 2 2_Fu Ding
city_id province_id CityResCo