oracle 11g透明网关访问ms sqlserver的心得

您所在的位置:网站首页 oracle透明网关访问sqlserver oracle 11g透明网关访问ms sqlserver的心得

oracle 11g透明网关访问ms sqlserver的心得

2024-07-13 01:44| 来源: 网络整理| 查看: 265

最近需要用Oracle连接MS数据库,在Oracle里安装Transparent Gateway for SQL Server,遇到不少问题,终于在今天完全搞定,所以把一些注意问题记录下来。

通过Gateway,可以在Oracle里透明的访问其他不同的数据库,如SQL Server, DB2, Sybase等等,就像远程Oracle数据库一样。各不同的数据为配置方式也大同小异,本文只说明SQL Server的安装。 Oracle的透明网关的安装其实也挺简单:

ms 数据库IP:10.63.12.10;默认端口:1433;数据库:MSDB;用户名:msdb;密码:123456

oracle数据库IP: 10.87.143.86;端口:1521

第一步,安装Oracle Transparent Gateway软件。

在9i中,Gateway软件就在那三张安装盘里;而在11g中是一个单独的安装文件,需要单独下载。

Oracle的Windows xp版本下载地址为: http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win32soft-098987.html

1、为了方便管理,不易混淆,透明网关安装路径最好与Oracle安装路径一致。

2、下一步,填写数据库服务器主机名,如:10.63.12.10;数据库名称:MSDB。

3、安装完后,会弹出配置监听界面,因为我们要手工配置,点击取消即可。

安装完Gateway软件后,在ORACLE_HOME目录下有一下dg4msql的目录,这就是Gateway软件的目录了。

第二步,配置Gateway的设置。

在dg4msql/admin目录下有一个initdg4msql.ora的文件。

该文件的格式是init.ora,这里的SID在后面需要用到,系统默认的是dg4msql,一般情况这样就可以了。

如果改名,在之后使用这个修改后地名字即可,配合使用MSDB,则文件名变成initMSDB.ora。

该文件是Gateway的初始参数文件,描述连接的是哪个SQL Server数据库。文件内容如下:

HS_FDS_CONNECT_INFO=10.63.12.10:1433//MSDB HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER

只要修改HS_FDS_CONNECT_INFO参数就可以了。格式是:hostname:port/serverinstance/databasename,其中hostname是机器名称或IP,PORT是SQL Server的端口号,SQL Server2005默认为1433(题外话:在Oracle的安装文档里没有指定这个PORT,所以无法正确使用,我在这儿搞了很长时间才从网上找到原因,看来Oracle也不能太相信了!)serverinstance是SQL Server的实例名,不知道什么时候SQL Server也搞起实例来了,一般空着就行。Databasename是SQL Server的数据库名,好像也可以空着,不过我还是指定了。这一步需要注意的就是那个端口号了。另外在9i中格式跟这个不一样,是"SERVER=dataserver;DATABASE=MSDB"。

第三步,配置监听器。

在listener.ora文件里加入以下内容:

SID_LIST_LISTENER =    (SID_LIST =      (SID_DESC =        (SID_NAME = MSDB)       # 前面定义的SID        (ORACLE_HOME = F:\oracle\product\11.2.0\dbhome_1)     #Oracle的安装目录        (PROGRAM = dg4msql)   # 配置目录,不能变      )    )

这里PROGRAM指定应用程序名称,不能改变。SID_NAME就是前面init.ora文件名里指定的SID,ORACLE_HOME没什么说的吧?这一步需要注意的是在集群环境下,SID_LIST_LISTENER也应该是这个名称而不应该是类似于SID_LIST_LISTENER_DBRAC1,SID_LIST_LISTENER_DBRAC2这样的名称。不同机器下内容一样就可以了。这也是我遇到的问题。

第四步,配置tnsnames.ora

TESTASRS_ERP =    (DESCRIPTION =      (ADDRESS_LIST =        (ADDRESS = (PROTOCOL = TCP)(HOST=10.87.143.86)(PORT=1521))          )      (CONNECT_DATA =        (SID = MSDB)   # 前面定义的SID      )      (HS=OK)    )

此处的SID也是init.ora文件名中指定的SID。与一般配置不同的就是(HS=OK)这句,这句指定是外部程序而不是Oracle数据库实例

第五步,创建DBLink

跟一般的DBLink一样,没什么说的,using子句里使用tnsnames.ora里配置的entry即可。

 create public database link msdbLink connect to msdb identified by "123456" using 'MSDB';

第六步,使用数据库连接

按一般的数据库连接使用: Select count(*) from area@msdbLink; 注意事项不同版本的名称不同 init.ora文件里的端口号集群环境的监听器配置 Tnsnames.ora里的(HS=OK) 未说明的重要问题事务问题



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3