`
Callan
  • 浏览: 730829 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle 访问 SQL SERVER过程

阅读更多
主机 
操作系统 
软件环境 
GateWay
192.168.100.6
Windows XP
Oracle 10g 
SQL Server 2000 Client
Finasvr
10.1.1.13
Windows 2000 Server 
SQL Server 2000(访问的数据库是SQLTest) 

一.    SQLDB的配置

SQL SERVER上建立用户testuser/testuser, 并授予可访问SQLTest的权限(Oracle数据库通过该用户访问SQL Server)

二.GATEWAY的配置(%ORACLE_HOME% C:\Oracle\product\10.2.0\

1.安装ORACLE10g透明网关(Oracle Transparent Gateway)选项 Microsoft SQL Server。 安装时需要选择SQL SERVER主机和数据库(server:10.1.1.13, DB:SQLTest)

  2.安装SQL Server2000,因为是WINDOWS XP,所以只装了SQL Server 2000客户端。

  3.拷贝%ORACLE_HOME%\tg4msql\admin\inittg4msql.ora改名为initSID_NAME.ora(example:initFinasvrHZ.ora),这是网关进程启动时需要的初始化文件,修改HS_FDS_CONNECT_INFO这行,其他的内容不变。比如:

HS_FDS_CONNECT_INFO="SERVER=Finasvr;DATABASE=SQLTest"   or

HS_FDS_CONNECT_INFO="Finasvr.SQLTest"

4.修改%ORACLE_HOME%\network\admin listener.ora内容如下:

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS_LIST =

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

      )

    )

  )

#这边的HOST一定是localhost,而不是SQL SERVER那台机器

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (SID_NAME = PLSExtProc)

      (ORACLE_HOME = C:\Oracle\product\10.2.0)

      (PROGRAM = extproc)

    )

   (SID_DESC=

      (SID_NAME=finasvrhz)

      (ORACLE_HOME= C:\Oracle\product\10.2.0)

   (PROGRAM=tg4msql)

)

)

 

5.重启动GateWay(IP:192.168.100.6)TNSListener服务

 

三.ORADB的配置($ORACLE_HOME=/u01/app/oracle/oracle/product/10.2.0/db_1/)

$ORACLE_HOME/network/admin/tnsnames.ora, 添加下面的内容

finasvrlk =   # 连接字符串可以随便取

(DESCRIPTION =

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

  (CONNECT_DATA =

   (SID = finasvrhz) #SID_NAME与上面的SID_NAME相同

  )

  (HS=OK)          #固定为OK

)

          保存tnsnames.ora后,可以用TNSPING命令测试listener

 

设置数据库参数global_names=false

设置global_names=false不要求建立的数据库链接和目的数据库的全局名称一致。global_names=true则要求建立的数据库链接和目的数据库的全局名称一致。

alter system set global_names=false;

 

建立数据库链接:                

         create database link sqllink connect to testuser identified by “testuser” using ‘finasvrlk’;

 

访问SQL Server下数据库里的数据:   

         select * from temp@sqllink;

 

使用透明网关只可以用标准的 DML,并及时提交

 

关于出现ORA-28545错误,在我这发生的原因是因为配置了listner之后没有重新启动它,当然,前提是在设置都正确下,出现了这个错误。

SQL> select * from t@sqllink;

select * from t@sqllink

*

ERROR 位于第 1 :

ORA-28545: 连接代理时 Net8 诊断到错误

NCRO:无法执行 RSLV 连接

ORA-02063: 紧接着2 lines(源于SQLLINK

解决:lsnrctl stop / lsnrctl start

 

另外, 蓝色字体标明的几个名称要特别注意!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics