gateway_(oracle-sql server)

这里有3台服务器,一台装oracle10g/11g服务器,1台sql server服务器,1台装windows系统的服务器(作为oracle透明网关服务器,因为oracle11g以前的透明网关不支持linux的系统)

具体的ip如下:

1.Oracledb服务器 IP:192.168.1.131

2.Sql server服务器 IP:192.168.10.30

3.透明网关服务器 IP:192.168.10.90

下面是详细步骤

一.在oracle官方网站下载透明网关的安装软件大概有200多M,我安装在192.168.10.90的D:\oracle\product\10.2.0下,默认情况下,安装透明网关时会D:\oracle\product\10.2.0\tg_1\tg4msql\admin生成一个默认的参数文件:inittg4msql.ora,它的sid是tg4mssql,你可以使用这个文件,也可以新建一个文件。在我们的sql server服务器上执行select db_name() 显示其sid为location,所以我们新建一个名为initlocation.ora的文件,文件中内容如下:

# This is a sample agent init file that contains the HS parameters that are

# needed for the Transparent Gateway for SQL Server

#

# HS init parameters

#

HS_FDS_CONNECT_INFO="SERVER=192.168.10.30; DATABASE=location"

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

HS_FDS_CONNECT_INFO的设置有多种格式,如: HS_FDS_CONNECT_INFO=server_name.db_name,但这种写法server_name不能为IP,且端口必须为默认的1433,如: 

HS_FDS_CONNECT_INFO=sqlserver.jss

二.在透明网关上配置监听,监听文件listener.oraD:\oracle\product\10.2.0\tg_1\NETWORK\ADMIN目录下,文件内容如下:

# listener.ora Network Configuration File: D:\oracle\product\10.2.0\tg_1\network\admin\listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = D:\oracle\product\10.2.0\tg_1)

      (PROGRAM = extproc)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = tg4msql)

      (SID_NAME = location) /*在这里的SID_NAME必须和上一步中的SID_NAME一致*/

      (ORACLE_HOME = D:\oracle\product\10.2.0\tg_1)

      (PROGRAM = tg4msql)

    ) 

  )

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10.90)(PORT = 1521))

    )

  )

三.在透明网关服务器上启动监听

LSNRCTL> start

启动tnslsnr: 请稍候...

TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production

系统参数文件为D:\oracle\product\10.2.0\tg_1\network\admin\listener.ora

写入D:\oracle\product\10.2.0\tg_1\network\log\listener.log的日志信息

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.90)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))

LISTENER 的 STATUS

------------------------

别名                      LISTENER

版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ

ction

启动日期                  12-1月 -2010 10:26:29

正常运行时间              0 天 0 小时 0 分 2 秒

跟踪级别                  off

安全性                    ON: Local OS Authentication

SNMP                      OFF

监听程序参数文件          D:\oracle\product\10.2.0\tg_1\network\admin\listener.o

ra

监听程序日志文件          D:\oracle\product\10.2.0\tg_1\network\log\listener.log

监听端点概要...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.10.90)(PORT=1521)))

服务摘要..

服务 "PLSExtProc" 包含 1 个例程。

  例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "tg4msql" 包含 1 个例程。

  例程 "location", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

LSNRCTL>

到这一步,在透明网关服务器上的工作全部完成。

四.在192.168.1.131上配置tnsname.ora

在里面添加:

location =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.10.90)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = location)

    )

    (HS = OK)

)

五.创建数据库链接

在192.168.1.131中的sql*plus上执行

drop public database link db_sql2;

create public database link db_sql2

connect to "sa" identified by "wuhan_wri3g"

using 'location';

执行完后,如果配置成功就可以从192.168.1.131上访问sql server中的数据了例如

desc t_city@db_sql2;

select * from dbo.t_sid@db_sql2;

如果这个sql有记录返回,说明透明网关没有问题。 

oracle的透明网关向前兼容做得不好,oracle 9i数据库不能通过10g的透明网关访问sqlserver。

补充1:如果想通过透明网关连接多个sql server数据库,则要在第一步中,新建相应SID_NAME的init<SID_NAME>.ora文件,在第二步中的监听文件中添加相应的

(SID_DESC =

      (GLOBAL_DBNAME = tg4msql)

      (SID_NAME = XXXX/*在这里的SID_NAME必须和上一步中的SID_NAME一致*/

      (ORACLE_HOME = D:\oracle\product\10.2.0\tg_1)

      (PROGRAM = tg4msql)

    ) 

然后在第四步中的tnsname.ora中添加相应的网络服务名解释

XXXX=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.10.90)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = xxxx)

    )

    (HS = OK)

)

其余步骤一样


补充2:

A: 多个库配置不同的gateway, 需要在gateway 目录下(C:\product\11.2.0\tg_2\dg4msql\admin)分别设置多个文件,命名为 init{sid_name}.ora。 里面配置见上。

---SID_NAME 多少个,这个文件就有多少个。


B:  GATEWAY 下的目录:(C:\product\11.2.0\tg_2\NETWORK\ADMIN) 下的listener.ora 文件 ,是关于sqlserver 不同的库 sid_name 增加。 

eg:

-------------------------------------------------------------------------------------------------

# listener.ora Network Configuration File: C:\product\11.2.0\tg_2\network\admin\listener.ora

# Generated by Oracle configuration tools.


LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 100-160)(PORT = 1521))  ----IP:192.168.10.90  

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

  )


SID_LIST_LISTENER=

   (SID_LIST =

     (SID_DESC =

      (SID_NAME = PLSExtProc)    ---这是原始的,可以不写

      (ORACLE_HOME = C:\product\11.2.0\tg_2)       

      (PROGRAM = extproc)        ----这是配置时原始的,可以不要

    )               

      (SID_DESC = 

         (SID_NAME = cninfo_ss)   ---第一个sqlserver 库的 sid_name

         (ORACLE_HOME = C:\product\11.2.0\tg_2)

         (PROGRAM=dg4msql)

      )

      (SID_DESC = 

         (SID_NAME = csmar_index)    ---第二个库sqlserver 的 sid_name

         (ORACLE_HOME = C:\product\11.2.0\tg_2)

         (PROGRAM=dg4msql)

      )

   )

ADR_BASE_LISTENER = C:\product\11.2.0\tg_2

----------------------------------------------------------------------------------------------------

C: GATEWAY  下的目录:(C:\product\11.2.0\tg_2\NETWORK\ADMIN) 下的 tnsnames.ora  为连接的oracle 库 servers服务。

eg:  ---这可增加,根据库的增加而增加。(oracle库)

  TO_131=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.131)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = gtadb1)

    )

  )


D: 需要把 sqlserver 在gateway 下的服务 放入oracle库 下的tnsnames.ora 下:


CSMAR =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.10。90)(PORT = 1522))  ---gateway 的IP 

    )

    (CONNECT_DATA =

      (SID = csmar_index)

    )

    (HS = OK)  --重要

  )


 E: 最后创建dblink public ,或者私用的。


create public database link link84 connect to "chengxuzu" identified by "gtachengxuzu" using 'CSMAR';

drop public database link xxx;



 sqlserver --oracle 

1,修改文件,指向sqlserver 实例,同时需要以实例命名 文件。放在文件夹中,多个sqlserver 蒋有多个这样的不同名称的文件。

2,透明网关下,修改linstener.ora 文件,把新增的sqlserver 实例新增进去。

3,透明网关下,tnsname.ora 增加 目标端oracle 监听名。

4,目标端,oracle tnsname.ora 下需要添加 sqlserver 对应实例的监听

5, 不需要安装 oracle client

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值