我正在尝试从 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到sql server db的用户名和密码
- 在互联网上阅读后,我可以看到一些人引用 DSN 数据源。我被告知,我所拥有的信息就是我所需要的。这是正确的还是我需要别的东西?
- 我在 inithsodbc.ora 和 tnsnames.ora 中指定的 sid 实际上是 sql server 数据库。它是否正确?
任何有关上述内容的帮助将不胜感激。谢谢