您的位置:首页 > 数据库 > Oracle

Oracle 访问 Sql Server

2014-02-14 15:30 197 查看
主机

操作系统

软件环境

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

另外, 蓝色字体标明的几个名称要特别注意!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: