Oracle9i,10g访问Sql Server透明网关相应的配置


1          引言

日前一个项目需要从省调及各地调汇总信息,浏览查看并可能会修正,最终生成E文件并上报。这里每天同步抽取数据时需要用到多台服务器多种类型数据库的数据,其中许多字段都是来自多个数据库的数据,数据源有Oracle和SqlServer的,数据字段多计算复杂且时间紧迫,若在应用程序里写程序无疑工作量不小,若是在Oracle直接访问各个数据工作量会减轻许多,众所周知在Oracle下访问同构数据库只需配置数据库连接(Database Link)即可,但访问异构型数据库直接这样就不行了。

不同数据库平台的互连一般称之为数据库的异构服务,现在各大数据库之间都可以实现这样的异构互连,只是各厂商的具体实现技术不一样,如:在SQL SERVER里面叫做链接服务器(LINKED SERVER)(在企业管理器->连接到将宿主该链接的 SQL Server 计算机。在树窗格中,展开"安全性"文件夹即有"链接服务器"),通过ODBC  Microsoft OLE DB 提供程序实现与其它数据库的互联;当然也提供了专用于 Oracle 2.6   Microsoft OLE DB 提供程序和用IBM DB2 的Microsoft OLE DB 提供程序等。

ORACLE实现异构服务的技术叫做透明网关(Transparent Gateway),当然之前ORACLE还采用过通用连接技术。目前ORACLE利用透明网关可以实现和SQL SERVERSYBASEDB2等多种数据库的互联。

透明网关的体系结构也很简单,在ORACLESQL SERVER之间使用ORACLE透明网关服务器实现互连互通,其中透明网关服务器可以与ORACLESQL SERVER数据库在同一台主机上,也可以是在独立的一台主机上。本着重介绍Oracle9i10gSql Server互联透明网关的相应配置。

 

2          Oracle 9i访问Sql Server的透明网关相应配置

这里以本地Oracle配置本地Sql Server和远程Sql Server为例分别做一介绍。

2.1          例一,本地Oracle访问本地Sql Server的透明网关相应配置

本地计算机主机名:jysoft-chut

操作系统:Windows XP 2002 SP3

 本地Oracle数据库Oracle 9.2.0.1.0

ORACLE_HOMED:\oracle\ora92

IP10.138.1.171

Port1521

 本地Sql Server数据库Sql2000 IP:10.138.1.171

db数据库名称pubs

用户名/密码:sa/psw

 说明:透明网关可以跟OracleSqlServer2000 数据库在同一台机器或者不同机器,本例是Oracle、透明网关、SqlServer 是同一台机器。

 1、运行Oracle 安装软件,安装类型选自定义,选择里面的安装Oracle Transparent Gateway 9.2.0.1.0,下面的Oracle Transparent Gateway From Microsoft Sql Server 9.2.0.1.0 可以看到,还可以选择其他的数据库如 SybaseDB2 等。

2、确认透明网关安装成功,会出现D:\oracle\ora92\tg4msql\admin目录,配置文件为 inittg4msql.ora 注意:如果(D:\oracle\ora92\network\admin)对应的 listener.ora 里面的 SID_NAME 设置为其他的,如本例的 sql2000,那么应该手动新增一个配置文件对应为 initsql2000.ora 而不是inittg4msql.ora了,其中 initsql2000.ora 里面内容如下:

HS_FDS_CONNECT_INFO="SERVER=JYSOFT-CHUT;DATABASE=pubs"

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

3、配置listener.ora

D:\oracle\ora92\network\admin目录下找到 listener.ora 文件

在段SID_LIST_LISTENER中加上

              (SID_DESC=

                     (GLOBAL_DBNAME = tg4msql)

                     (PROGRAM=tg4msql)

                     (SID_NAME=sql2000)

                     (ORACLE_HOME=d:\Oracle\Ora92)

              )

其中 GLOBAL_DBNAMESID_NAME 可以自定义设置,但要注意与D:\oracle\ora92\tg4msql\admin的配置文件(init<SID_NAME>.ora)对应,这里为sql2000那么相应目录(tg4msql\admin)的配置文件名应为 initsql2000.ora 。注:配置完了需要重起监听器.

  在命令行启动lsnrctl

  c:lsnrctl

  lsnrctl>stop

  lsnrctl>start

或者到Windows服务管理界面重启对应的Oracle监听器(TNSListener 

4、配置tnsnames.ora

D:\oracle\ora92\network\admin目录下找到 tnsnames.ora 文件

加上下列代码

tg_sql  =

  (DESCRIPTION=

    (ADDRESS=(PROTOCOL=tcp)(HOST=jysoft-chut)(PORT=1521))

    (CONNECT_DATA=(SID=sql2000))

    (HS=OK)

  )

   注:这里的host为透明网关的主机名或IP地址,端口也是对应的,这里因为透明网关同OracleSqlServer同一台机器,所以一样;sid  listener.ora 对应,为sql2000;服务名(tg_sql)随便设置,但注意建立db link时要跟这里一样;(HS=OK) 代表异构服务。 

5、建立数据库连接

  drop dabase link db_sql;

  create public database link db_sql

  connect to sa identified by psw

  using "tg_sql";

   注:其中sa/psw为对应Sql Server2000里的数据库pubs的用户/密码 

6测试数据库连接

 

这样,Sql Server数据库pubs就可以在Oracle下通过透明网关来访问了。

 7、对远程数据库不允许进行DDL操作。

8、如果需要配置对多个Sql Server数据库进行访问,可以在目录tg4msql中配置多个init<SID_NAME>.ora文件,里面指定对应的数据库同时在  listener.ora  tnsnames.ora 进行配置,再建立相应的database links即可。

  • 1
  • 2
  • 3
  • 下一页

相关内容