前些日子需要从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
阅读(4443) | 评论(0) | 转发(0) |