oracle9i与SQL的连接

经过数据连接(Database Link),从Oracle 9i 链接 SQL Server 2000(实例)web

从Oracle 9i链接SQL Server2000,须要用透明网关(Transparent Gateway),经过它,咱们能够 sqlplus 操纵其余数据库,如 ms sqlserver 、 sybase 、 infomix 等,实现数据库的异构服务。sql

在Oracle 8i中没有透明网关,9i自带,可是默认不安装。数据库

(一)安装Transparent Gateway for Windows SQL Server:服务器

*若是在Oracle主目录下有tg4msql文件夹,那么不须要从新安装。oracle

1. 启动Oracle安装盘disk 5里面的setup.exe。tcp

2. 按Next两次,选择Oracle 9i Database 9.2.0.1.0,按Next。ide

3. 选择Custom,按Next。sqlserver

4. 按Oracle Transparent Gateway 9.2.0.1.0旁边的"+",选择Oracle Transparent Gateway for Microsoft SQL Server 9.2.0.1.0,按Next。测试

5. 接着安装。ui

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: BIO549

    Database Name: salesdata1

(a)经过tg4msql链接:

    1. 在Oracle主目录下tg4msql\admin目录下,拷贝inittg4msql.ora并更名为init<SID>.ora。例如,我用的SID是MSSQL,那么个人文件名是initMSSQL.ora。  

    2. 配置init<SID>.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=BIO549;DATABASE=salesdata1"

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

******************************   

    3. 配置Oracle主目录下network\admin目录下的listener.ora。以个人例子,以下:

*NEWLISTENER是我新建的LISTENER的名字,默认应该是LISTENER

******************************

# LISTENER.ORA Network Configuration File: C:\oracle\ora92\network\admin\listener.ora

# Generated by Oracle configuration tools.

NEWLISTENER =

(DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT = 1521))

      )

    )

)

SID_LIST_NEWLISTENER =

(SID_LIST =

    (SID_DESC =

      (ORACLE_HOME = C:\oracle\ora92)

      (SID_NAME = MSSQL)

      (PROGRAM = tg4msql)

    )

)

******************************

    4.配置Oracle主目录下network\admin目录下的tnsnames.ora,以个人例子,以下:

******************************

MSSQL =

(DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT = 1521))

    (CONNECT_DATA = (SID = MSSQL))

    (HS=MSSQL)

)

******************************

   5. 重起listener。

   6. 用sqlplus创建并测试Database Link。在命令行中,用如下命令:

sqlplus /nolog

conn sys/webpos as sysdba      ---->用sysdba的身份登录

alter system set global_names = true;   ---->设置global_names=false不要求创建的数据库连接和目的数据库的全局名称一致

create database link test1 connect to sa identified by sa using 'mssql';

select * from salesdata1@test1;

    7.链接成功。其中,connect to后面是用户名,identified by后面是密码,using后面是SID。

(b)经过hsodbc链接:

    1. 在ODBC中创建SQL Server链接的System DSN,我用名字BIO549。(步骤不详述,请查MSDN)

    2. 在Oracle主目录下hs\admin的目录下,拷贝inithsodbc.ora并更名为init<SID>.ora。此次,我用的SID是BIO549,因此文件名是BIO549。以个人例子,以下:

*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 = BIO549

HS_FDS_TRACE_LEVEL = OFF

#

# Environment variables required for the non-Oracle system

#

#set <envvar>=<value>

******************************

  

    3. 配置listener.ora,此次加入下面一段:

******************************

(SID_DESC=

      (ORACLE_HOME = C:\oracle\ora92)

      (SID_NAME=BIO549)

      (PROGRAM=hsodbc)

    )

******************************

    所以,个人listener.ora所有以下:

******************************

# LISTENER.ORA Network Configuration File: C:\oracle\ora92\network\admin\listener.ora

# Generated by Oracle configuration tools.

NEWLISTENER =

(DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

        (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.180)(PORT = 1521))

      )

    )

)

SID_LIST_NEWLISTENER =

(SID_LIST =

    (SID_DESC =

      (ORACLE_HOME = C:\oracle\ora92)

      (SID_NAME = MSSQL)

      (PROGRAM = tg4msql)

    )

    (SID_DESC=

      (ORACLE_HOME = C:\oracle\ora92)

      (SID_NAME=BIO549)

      (PROGRAM=hsodbc)

    )

)

******************************

4. 配置tnsnames.ora,以下:

******************************

BIO549 =

(DESCRIPTION=

    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.180)(PORT=1521))

    (CONNECT_DATA= (SID=BIO549))

    (HS=OK)

)

******************************

    5. 重起listener并创建链接。

(三) 注意:

我在测试的时候,起先老是有ORA-28545的错误,经调查含义以下:

ORA-28545 error diagnosed by Net8 when connecting to an agent

    Cause: An attempt to call an external procedure or to issue SQL to a non-Oracle system on a Heterogeneous Services database link failed at connection initialization. The error diagnosed by Net8 NCR software is reported separately.

    Action: Refer to the Net8 NCRO error message. If this isn't clear, check connection administrative setup in tnsnames.ora and listener.ora for the service associated with the Heterogeneous Services database link being used, or with 'extproc_connection_data' for an external procedure call.

我仔细的查看了全部文件的配置,发现是因为listener的名字致使的错误(SID_LIST_NEWLISTENER),所以我建议,若是出现这个错误,请仔细检查全部的配置文件。

文章如转载,请注明转载自【网管小王的独立博客】:http://www.5iadmin.com/

相关文章
相关标签/搜索