从Oracle 9i连接SQL Server数据库

    技术2022-05-20  76

    从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


    最新回复(0)