Install Oracle Transparent Gateway for Microsoft SQL Server Step By Step

Author: Kamus
Date: 2003-12

一、设置GATEWAY机器(Gateway可以和Oracle Database在同一台机器上,也可以分开)
1。安装透明网关

2。设置ORACLE_HOME/tg4msql/admin/inittg4msql.ora
修改:
HS_FDS_CONNECT_INFO="SERVER=BEIBEI;DATABASE=Northwind"

3。设置ORACLE_HOME/network/admin/listener.ora
更改为:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:/oracle/ora90)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = tg4msql)
      (ORACLE_HOME = C:/oracle/ora90)
      (PROGRAM = tg4msql)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = oradb.seraphim)
      (ORACLE_HOME = C:/oracle/ora90)
      (SID_NAME = oradb)
    )
  )

二、设置Oracle Database机器
4。设置ORACLE_HOME/network/admin/tnsnames.ora
(Oracle Server需要此配置使用gateway)
添加:
MSQL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = seraphim)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = tg4msql)
    )
    (HS = OK)
  )
HOST:指Gateway所在的机器。
PORT:在GATEWAY机器中listener.ora文件里指定的监听gateway的端口
SID:必须和GATEWAY机器中listener.ora文件里指定的SID_NAME相同
HS = OK:指定该连接将使用Oracle的异构服务

5。检查ORACLE_HOME/network/admin/sqlnet.ora
如果文件中包含:
names.directory_path = (TNSNAMES, HOSTNAME)
names.default_domain = world
name.default_zone = world
这些行,那么4中的connect_descriptor必须添加.world后缀(如上例中MSQL必须为MSQL.world)

6。修改init.ora文件
设置global_names=false,重启数据库(如果原先的设置是global_names=true的话)。
否则会在执行sql时报错:ORA-02085: 数据库链接MSQL与HO.WORLD相连结
原因如下:The GLOBAL_NAMES parameter when set to TRUE implies that database link name should be

similar to the Global database name to which you are trying to connect.

7。创建Database Link
CREATE PUBLIC DATABASE LINK MSQL CONNECT TO
hr IDENTIFIED BY hr USING 'MSQL';

三、设置SQLServer服务器
8。创建用户hr/hr,并赋予相应数据库(本例中使用数据库Northwind)的检索权限或者写入权限。

9。现在可以通过如下SQL检索SQLServer中的数据了。
select count(*) from all_tables@msql;

select "OrderID","ShipName" from "Orders"@msql

select orders."OrderID",orderdet."Quantity",products."ProductName"
from "Orders"@msql orders,"Order Details"@msql orderdet,"Products"@msql products
where orders."OrderID"=orderdet."OrderID" and orderdet."ProductID"=products."ProductID"

注意,对于有大小写的表名和字段名需要加双引号来读取。

建议:为了在Oracle中方便的检索SQLServer的数据,可以在需要检索的表上创建视图(create view),

这样检索时就如同操作本地Oracle表一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值