Oracle中使用透明网关链接到Sqlserver

4433阅读 0评论2008-04-15 blue_stone
分类:Oracle

前些日子需要从Oracle中访问SQL Server数据库, 自然想到了透明网关. 因为Oracle数据库是Linux上的, 而Linux上的Oracle9i不包括连接到SQL Server的透明网关.就在一台单独的Windows服务器上安装了透明网关用做Oracle访问SQL Server的桥梁.

1 Transparent Gateway for SQL Server安装
  从Oracle 9i数据库安装光盘云此能够setup.exe安装TG, 安装产品选择Oracle 9i Database 9.2.0.1.0, 安装类型选择"自定义",安装组件选择Oracle Net Services和Oracle Transparent Gateways, 并在此项下选择Oracle Transparent Gateway for Microsoft SQL Server, 安装过程中可以不设置连接到SQL Server的信息.

2 编辑%ORACLE_HOME%\tg4msql\admin\init%ORACLE_SID%.ora, 该文件包含了TG for SQL Server的配置信息, 其中%ORACLE_SID%是给TG的"SID", 默认为tg4msql. 修改文件中的行

HS_FDS_CONNECT_INFO="SERVER=servername;DATABASE=pubs" 

其中SERVER后为SQL Server所在的服务器名称或ip地址,Database为连接到的数据库名称.

3 编辑%ORACLE_HOME%\network\admin\listener.ora, 编辑对应listener的SID_LIST

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=%ORACLE_SID%)
(ORACLE_HOME=oracle_home_directory)
(PROGRAM=tg4msql)
)
)

其中%ORACLE_SID%为第二布中设置的SID, 默认值为tg4msql. 修改listener.ora文件后需重启listener使修改生效.

4 编辑需要连接到透明网关的Oracle Server的$ORACLE_HOME\network\admin\tnsnames.ora, 例如:

tg4msql=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=sqlserver)(PORT=1521))
(CONNECT_DATA=(SID=gateway_sid))
(HS=OK))


5 在Oracle数据库中建立连接, 指向TG for SQL Server.

CREATE  DATABASE LINK tg4msql CONNECT TO
2 "user" IDENTIFIED BY "password" USING 'tg4msql';

其中tg4msql是tnsnames中建立的连接字符串.

6 测试, 如运行select * from emp@tg4msql等.

7 无法不通过Oracle 数据库服务器连接到TG, 比如不能使用sqlplus sa/sapassword@tg4msql的方式通过TG登录到SQL Server.

ps1: Oracle11g中Transparent Gateways和procedural Gateways已经合并成为Oracle Database Gateways. 并且可以直接在Oracle11g for Linux中建立连接到SQL Server的网关,具体步骤,请参考相关文档.

ps:好久没有写文章了,感觉自己懒了好多! 郁闷ing

上一篇:更新CRS中资源的profile
下一篇:转换TTC成TTF的小工具