【发布时间】:2011-09-01 01:18:53
【问题描述】:
我正在尝试从 Oracle 10G(在 UNIX 上)连接到 SQL Server 数据库(在 Windows 上)。我看过手册,我承认我发现文档很难理解。似乎有几个选项可供使用,但没有文档描述每个选项的工作原理。
作为一个例子,我得到了以下关于我需要连接的数据库(即 SQL Server 数据库)的信息
- 用户名
- 密码
- 数据库名称 [假设数据库名称为 data_extract]
为了连接上面我做了以下更改
$ORACLE_HOME/hs/admin/inithsodbc.ora
HS_FDS_CONNECT_INFO = data_extract
HS_FDS_TRACE_LEVEL = 0
$ORACLE_HOME/network/admin/tnsnames.ora
sqlserver.db =
(DESCRIPTION =
(ADDRESS = (protocol=tcp)(host=10.10.10.10)(port=49400))
(connect_data = (sid=data_extract))
(hs=ok)
)
$ORACLE_HOME/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = merlin)(PORT = 1525))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u/app/oracle/product/10.2.0/db)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = db1.mydb.co.uk)
(ORACLE_HOME = /u/app/oracle/product/10.2.0/db)
(SID_NAME = billdb)
)
(SID_DESC =
(SID_NAME = data_extract)
(ORACLE_HOME = /u/app/oracle/product/10.2.0/db)
(program = hsodbc)
)
)
注意:在 listener.ora 中,我只添加了最后一个 SID_DESC 条目。
然后我继续创建数据库链接,如下所示
create database link sqlservdb using 'sqlserver.db';
当我尝试访问表时,出现以下错误
sqlplus> select * from TESTTABLE@sqlservdb;
select * from TESTTABLE@sqlservdb
*
ERROR at line 1:
ORA-28545: error diagnosed by Net8 when connecting to an agent
Unable to retrieve text of NETWORK/NCR message 65535
ORA-02063: preceding 2 lines from ORASQLSERVER
我不确定的几件事
- 从oracle db到sql server db访问sql server的用户名和密码在哪里指定
- 在 Internet 上阅读后,我可以看到一些人引用了 DSN 数据源。我被告知,我所拥有的信息就是我所需要的。这是正确的还是我需要别的东西?
- 我在 inithsodbc.ora 和 tnsnames.ora 中指定的 sid 实际上是 sql server 数据库。它是否正确?
任何有关上述内容的帮助将不胜感激。谢谢
【问题讨论】:
-
你的oracle数据库运行在什么平台上?
-
Oracle 10G 在 Unix 上运行,SQL Server 数据库在 Windows 上运行。谢谢
-
您是否尝试提供用户/密码?
CREATE DATABASE LINK sqlservdb CONNECT TO myuser IDENTIFIED BY mypass USING 'sqlserver.db';您是否尝试使用不带点的连接名称(例如sqlserver)? -
有人可以确认我是否需要安装第 3 方驱动程序才能正常工作。我在几篇文章中看到相互矛盾的信息。
标签: sql-server database oracle heterogeneous-services