我正在尝试从Oracle 10G(在UNIX上)连接到sql Server数据库(在Windows上).我查看了手册,我承认我发现文档很难遵循.似乎有几个选项可供使用,但没有一个文档描述每个选项的工作原理.
作为一个例子,我已经获得了有关我需要连接的数据库的以下信息(即sql Server数据库)
>用户名
>密码
>数据库名称[假设数据库名称为data_extract]
为了连接上面我做了以下更改
$ORACLE_HOME / HS /管理/ inithsodbc.ora
HS_FDS_CONNECT_INFO = data_extract HS_FDS_TRACE_LEVEL = 0
$ORACLE_HOME /网络/ 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 /网络/管理/ 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数据库.它是否正确?
任何有关上述的帮助将不胜感激.谢谢
解决方法
我使用了必须在Oracle UNIX机器上配置的Data Direct驱动程序.您必须在UNIX中创建ODBC连接才能看到sql Server. (至少我一直都是这样做的)