从Oracle 9i连接SQL Server2000,需要用透明网关(Transparent Gateway),通过它,我们可以操纵其他数据库,如 ms sqlserver 、 sybase 、 infomix 等,实现数据库的异构服务。
在Oracle 9i中默认没有安装透明网关组件。
(一)安装Transparent Gateway for Windows SQL Server:
*如果在Oracle主目录下有tg4msql文件夹,那么不需要重新安装。
1. 启动Oracle安装盘里面的setup.exe。 2. 按Next两次,选择Oracle 9i Database 9.2.0.1.0,按Next。 3. 选择自定义[Custom],按Next。 4. 按Oracle Transparent Gateway 9.2.0.1.0旁边的"+",选择Oracle Transparent Gateway for Microsoft SQL Server 9.2.0.1.0,按Next。 5. 接着安装。 6. 安装完毕之后,在Oracle主目录下,会有tg4msql文件夹。
(二)配置: 我的环境: Oracle 服务器: OS: Windows XP (SP2) IP: 192.168.1.180 PORT: 1521 SQL 服务器: OS: Windows 2000 IP: 192.168.1.213 Database Server Name: LXH Database Name: salesdata1
(A) 通过tg4msql连接: 1. 在Oracle主目录下tg4msql/admin目录下,拷贝inittg4msql.ora并改名为init<SID>.ora。例如,我用的SID是MSSQL(SID名称由自己定义),那么我的文件名就是initMSSQL.ora。
以我的例子,如下: ****************************** # This is a sample agent init file that contains the HS parameters that are # needed for the Transparent Gateway for SQL Server
# # HS init parameters # HS_FDS_CONNECT_INFO="SERVER=192.168.1.213 ;DATABASE=salesdata1" HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER ******************************
2. 配置Oracle主目录下network/admin目录下的listener.ora。以我的例子,在SID_LIST_LISTENER 节点增加
(SID_DESC = (ORACLE_HOME = D:/oracle/ora90) (SID_NAME = MSSQL) (PROGRAM = tg4msql) )
我的listener.ora全部配置如下: ****************************** # LISTENER.ORA Network Configuration File: d:/oracle/ora90/network/admin/listener.ora# Generated by Oracle configuration tools.
LISTENER = (DESCRIPTION_LIST =
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = LXH)(PORT = 1521)) ) ) )
SID_LIST_LISTENER = (SID_LIST =
(SID_DESC = (GLOBAL_DBNAME = LXH) (ORACLE_HOME = d:/oracle/ora90) (SID_NAME =LXH) ) (SID_DESC = (ORACLE_HOME = D:/oracle/ora90) (SID_NAME = MSSQL) (PROGRAM = tg4msql) ) )
3.配置Oracle主目录下network/admin目录下的tnsnames.ora,以我的例子,如下: ****************************** MYMSSQL = (DESCRIPTION =
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.254)(PORT = 1521))
) (CONNECT_DATA = (SID = MSSQL)) (HS=OK) ) ******************************
(HS=OK)表示异构服务。
4. 重起listener。
5. 用 PLSQL Developer 建立并测试Database Link。用SQL语句: create database link DBSQLLINK connect to sa identified by '123' using 'MYMSSQL';
其中,connect to后面是用户名,identified by后面是密码,using后面是配置的ORACLE服务名。查询示例: select * FROM TABLENAME@DBSQLLINK;
(B)通过hsodbc连接: 1. 在ODBC中建立SQL Server连接的System DSN,我用名字MYSQL。 2. 在Oracle主目录下hs/admin的目录下,拷贝inithsodbc.ora并改名为init<SID>.ora。这次,我用的SID是MYSQL,所以文件名是initMYSQL.ORA。以我的例子,如下: *HS_FDS_CONNECT_INFO =后面是数据源名称。 ****************************** # This is a sample agent init file that contains the HS parameters that are # needed for an ODBC Agent.
# # HS init parameters # HS_FDS_CONNECT_INFO = MYSQLHS_FDS_TRACE_LEVEL = OFF # # Environment variables required for the non-Oracle system # #set <envvar>=<value> ****************************** 3. 配置listener.ora,这次加入下面一段: ****************************** (SID_DESC= (ORACLE_HOME = D:/oracle/ora90) (SID_NAME=MYSQL) (PROGRAM=hsodbc) ) ****************************** 4. 配置tnsnames.ora,如下: ****************************** MYSQL = (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.180)(PORT=1521)) (CONNECT_DATA= (SID=MYSQL)) (HS=OK) ) ******************************
5. 重起listener并建立连接。
(三)推荐阅读:
Managing Oracle Heterogeneous Services Using Transparent Gateways: http://download-west.oracle.com/docs/cd/A87860_01/doc/server.817/a76960/hs_admin.htm
http://www.stanford.edu/dept/itss/docs/oracle/9i/server.920/a96525/e24280.htm
Making a Connection from Oracle to SQL Server(in English): http://www.databasejournal.com/features/oracle/article.php/10893_3442661_1