我正在尝试从UNIX上的Oracle 10G连接到一个Windows上的SQL Server数据库。我已经查看了手册,但承认我发现文档很难理解。似乎有几个选项可供使用,但是没有一个文档描述每个选项如何工作。
举个例子,我已经收到了关于需要连接的数据库(即SQL Server数据库)的以下信息:
用户名 密码 数据库名称[假设数据库名称为data_extract]
为了连接上述内容,我进行了以下更改: $ORACLE_HOME/hs/admin/inithsodbc.ora
注意:在listener.ora文件中,我仅添加了最后一个SID_DESC条目。
然后,我按照下面所示创建了数据库链接。
举个例子,我已经收到了关于需要连接的数据库(即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 Server数据库的SQL Server?
- 在网上阅读了一些资料后,我看到有些人提到DSN数据源。有人告诉我我已经拥有所需的所有信息。这是正确的吗?还是我需要其他东西?
- 我在inithsodbc.ora和tnsnames.ora中指定的sid实际上是SQL Server数据库。这是正确的吗?
如果对以上内容有任何帮助,将不胜感激。谢谢。
CREATE DATABASE LINK sqlservdb CONNECT TO myuser IDENTIFIED BY mypass USING 'sqlserver.db';
你尝试过不带点的连接名称吗(例如sqlserver
)? - arnep