我正在尝试从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数据库到sql服务器数据库访问sql服务器的用户名和密码
- 在互联网上阅读后,我可以看到一些人引用DSN数据源。有人告诉我,我所掌握的信息就是我所需要的全部。这是正确的吗?还是我需要其他东西
- inithsodbc.ora和tnsnames.ora中指定的sid i实际上是sql server数据库。这是正确的吗
如有上述帮助,我们将不胜感激。感谢
我使用了必须在Oracle UNIX机器上配置的Data Direct驱动程序。您必须在UNIX中创建ODBC连接,才能查看SQL Server。(至少我一直都是这样做的)
为了创建到SQL Server的数据库链接,您必须将连接名称和密码用双引号括起来,如下所示:
create database link mysqlink
connect to "myuser" identified by "mypassword" using 'servername';