用透明网关1. 在SQLDB上创建将要从Oracle数据库访问SQL Server的用户testuser/testuser,并授予可访问CDR的权限;接下来是GATEWAY:1.安装好Oracle 9.0.1 Database for Windows后,会发现在%ORACLE_HOME%下有目录tg4msql,以及网关程序$ORACLE_HOME\BIN\tg4msql;2. 确保在c:\winnt\system32下有ntwdblib.dll,若没有则安装SQL Server2000(安装类型选择“仅连接”)。此文件是访问SQL Server的DB-Library;3. ping SQLDB看是否通,若不通则在\winnt\system32\drivers\etc\hosts文件中增加一行,用来解析SQLDB的IP地址,很简单不多说了。4. 修改%ORACLE_HOME%\tg4msql\inittg4msql.ora,这是网关进程启动时需要的初始化文件。只需改下面这一行即可:HS_FDS_CONNECT_INFO=SQLDB.CDR5.修改%ORACLE_HOME%\network\admin\listener.ora如下:LISTENER =(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME=tg4msql)(ORACLE_HOME=e:\Oracle\OraHome_9I) #用你的%ORACLE_HOME%(PROGRAM=tg4msql)))
最后是ORADB:1.修改tnsnames.oraCDR = #CDR是我起的,你可以选用其它(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST= GATEWAY)(PORT = 1521))(CONNECT_DATA =(SID = tg4msql) #tg4msql必须要和GATEWAY上listener.ora中的SID一致)(HS = OK) #这很重要,告诉Oracle Server要调用异构服务模块来处理)
2.修改initora9i.ora(数据库初始化文件)global_names=true,重启数据库。否则会在执行sql时报错:ORA-02085: 数据库链接CDR与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.
3.创建访问SQLDB.CDR的数据库链接SQL>create public database link cdr connect to testuser identified by testuser using ‘CDR’;
4. OK!最后执行SQL测试看是否能正常访问SQL ServerSQL>select count(*) from all_tables@cdr;