ORACLE10g通过透明网关连接SQL SERVER2005数据库

通过数据链接(Database Link),从Oracle 10g 连接 SQL Server 2005(实例)
从Oracle 10g连接SQL Server2005,需要用透明网关(Transparent Gateway),通过它,我们可以 sqlplus 操纵其他数据库
也可以连接 ms sqlserver 、 sybase 、 infomix 等,实现数据库的异构服务。
目前是SQL SERVER2005异构连接。

在Oracle 8i中没有透明网关,oracle 10.2的透明网关是单独的一个安装文件,需要另外安装(ORACLE9i数据库的透明网关文件在9i的安装盘内)
10g需要下载10201_gateways_win32.zip插件。

(一)安装Transparent Gateway for Windows SQL Server:
注意:如果透明网关和数据库服务器安装在一台机器上,安装透明网关之前必须要将原数据库服务器启动起来,
不然会重复安装OraTg10g_home1数据库软件,这样就会有两个数据库软件,导致listener混乱
我的透明网关是单独安装安装在一台服务器上的,没跟数据库服务器安装在一起。
      
1. 下载10201_gateways_win32.zip插件,解压10201_gateways_win32.zip
2. 进入10201_gateways_win32文件夹,点击setup.exe
3. 按Next,出现“选择主目录详细信息”欢迎界面,可以更改路径和名称,我一般是默认,然后选择下一步。
4、选择Oracle Transparent Gateway for Microsoft SQL Server 10.2.0.1.0 ,按Next
4、下一步需要填写SQL 服务器名和SQL的数据库名,此处填写SQL SERVER数据库的IP地址和数据库名,这步非常重要,最好找对方DBA进行确认。
5. 接着安装。
6. 安装完毕之后,在Oracle的D:\oracle\product\10.2.0\tg_1主目录下,会有tg4msql文件夹。
7、由于透明网关服务器没有跟数据库服务器安装在一台机器上,属于空白安装,会出现监听配置,一路默认即可。

注:设置GATEWAY机器(Gateway可以和Oracle Database在同一台机器上,也可以分开)

(二)环境:
我的环境设置是将Gateway和Oracle Database在设置在不同机器
我的环境:
Oracle 透明网关服务器:
    OS: Windows Server 2003(SP2)
    IP: 10.11.111.1
    PORT: 1521
SQL 服务器:
    OS: Windows Server 2005
    IP: 10.22.222.2
    Database Server Name: dell

(三)、配置

(a)通过tg4msql连接:
1. 在透明网关服务器的D:/oracle/product/10.2.0/db_1/tg4msql/admin目录下,有一个文件inittg4msql.ora,该文件格式是init.ora。

2. 配置inittg4msql.ora,以我的例子,如下:
******************************
# This is a sample agenadt 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=10.22.222.2;DATABASE=dell"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
*******************************

3、配置透明网关服务器的D:/oracle/product/10.2.0/tg_1/network/admin目录下的listener.ora。以我的例子,如下:
原来的listener.ora文件内容如下:
# 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)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = cgyb-tmwg2)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

修改为:

# 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 =
      (SID_NAME = tg4msql)
      (ORACLE_HOME = D:\oracle\product\10.2.0\tg_1)
      (PROGRAM = tg4msql)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = cgyb-tmwg2)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )
主要是增加了SID_NAME = tg4msql的描述。

4、重启透明网关服务器 AND 监听。

5、配置Oracle数据库服务器的%ORACLE_HOME%/network/admin目录下的tnsnames.ora,以我的例子,如下:
MSSQL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.11.111.1admin)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = tg4msql)
    )
    (HS = OK)
  )
解释如下:
HOST:指透明网关Gateway所在的机器。
PORT:在GATEWAY机器中listener.ora文件里指定的监听gateway的端口
SID:必须和GATEWAY机器中listener.ora文件里指定的SID_NAME相同
HS = OK:指定该连接将使用Oracle的异构服务

6、检查ORACLE_HOME/network/admin/sqlnet.ora   (该步骤我在实际安装中跳过,没有进行该步检查)
# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS,NONE)
names.directory_path = (TNSNAMES, HOSTNAME)

注意下面的一点:
如果文件中包含:
names.directory_path = (TNSNAMES, HOSTNAME)
names.default_domain = world
name.default_zone = world
这些行,那么4中的connect_descriptor必须添加.world后缀(如上例中MSQL必须为MSQL.world)
参考文档中的:
connect_descriptor=
   (DESCRIPTION=
      (ADDRESS=
         (PROTOCOL=TCP)
         (HOST=host_name)
         (PORT=port_number)
      )
      (CONNECT_DATA=
         (SID=gateway_sid))
      (HS=OK))
connect_descriptor is the description of the object to connect to as specified when creating the database link, such as
tg4msql. Check the sqlnet.ora file in the Oracle database server's ORACLE_HOME for the following lines:
names.directory_path = (TNSNAMES, HOSTNAME)
names.default_domain = world
name.default_zone = world
Note: If the Oracle database server is on Microsoft Windows, the file is ORACLE_HOME/network/admin/sqlnet.ora.

7、动态修改global_names参数值:            (该步骤我在实际安装中数据库服务器该参数已经默认为false,跳过
alter system set global_names = false;
否则会在执行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.

8. 重起数据库服务器的listener。
lnsrctl stop
lsnrctl start

9. 用sqlplus建立并测试Database Link。在命令行中,用以下命令:
建立Database Link
create public database link mssql  connect to "sa" identified by "sa"   using 'mssql';

注:connect to后面是用户名,identified by后面是密码,using后面是SID。

select * from y_jlk@mssql
查询成功!

注:如果global_names不是false的话在执行select * from y_jlk@MSQL会报下面的错误:
ORA-02085: 数据库链接 MSQL.TEST.COM.CN 连接到 HO.WORLD
可以通过修改alter system set global_names = false; 来避免该错误

10.连接成功



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30146442/viewspace-2123967/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30146442/viewspace-2123967/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值