ORACLE实现异构服务的技术叫做透明网关(Transparent Gateway),当然之前建立ODBC就是ORACLE采用通用连接技术。目前ORACLE利用透明网关可以实现和SQL SERVER、SYBASE、DB2等多种数据库的互联。
透明网关的体系结构也很简单,在ORACLE和SQL SERVER之间使用ORACLE透明网关服务器实现互连互通,其中透明网关服务器可以与ORACLE或SQL SERVER数据库在同一台主机上,也可以是在独立的一台主机上。
oracel database for windows 9i以后都有一项透明网关(Transparent Gateway)的安装,默认安装是不会安装这项的,要在自定义安装中选择Transparent Gateway,它现在支持多种数据库:SQL SERVER、SYBASE、DB2,选择SQL SERVER安装即可.
1. 在SQLDB上创建将要从Oracle数据库访问SQL Server的用户testuser/testuser,并授予可访问CDR的权限;
接下来是GATEWAY:
1.安装好Oracle 9.0.1 Database for Windows后,会发现在%ORACLE_HOME%下有目录tg4msql,以及网关程序$ORACLE_HOMEBINtg4msql;
2. 确保在c:winntsystem32下有ntwdblib.dll,若没有则安装SQL Server2000(安装类型选择“仅连接”)。此文件是访问SQL Server的DB-Library;
3. ping SQLDB看是否通,若不通则在winntsystem32driversetchosts文件中增加一行,用来解析SQLDB的IP地址,很简单不多说了。
4. 修改%ORACLE_HOME%tg4msqlinittg4msql.ora
inittg4msql.ora内容如下:
HS_FDS_CONNECT_INFO="SERVER=sqlserver_hostname;DATABASE=pubs" HS_DB_NAME=pubs HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER5、$ORACLE9I_HOMEnetworkadmin 下listener.ora内容如下:
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.2)(PORT = 1521)) ) ) )SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = test9) (ORACLE_HOME = d:oracleora92) (SID_NAME = test9) ) (SID_DESC= (SID_NAME=pubs) (ORACLE_HOME=d:OracleOra92) (PROGRAM=tg4msql) ) (SID_DESC= (SID_NAME=northwind) (ORACLE_HOME=d:OracleOra92) (PROGRAM=tg4msql) ) ) 重启动这台做gateway的windows机器上(IP:192.168.0.2)TNSListener服务.
(凡是按此步骤新增可访问的SQL Server数据库时,TNSListener服务都要重启动)
6、在oracle server上的tnsnames.ora中加入到透明网关的tnsname,内容如下:
sql2k =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.16.98.16)(PORT = 1521)) #此处HOST填的是透明网关SERVER的地址
)
(CONNECT_DATA = (SID = tg4msql) ) #此SID应和透明网关SERVER上设定的SID相同
(HS=OK)
)
7、修改ORACLE SERVER的初始化参数,将global_names设为false,因为我们并不使用GLOBAL NAME。然后重起数据库。
8、现在在ORACLE SERVER上创建DB LINK就可以了
注意,查询sql server的字段时要用双引号括起来,而且sql server字段命名不能采用第一个字母大写的方式
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/77580/viewspace-212792/ ,如需转载,请注明出处,否则将追究法律责任。