我正在努力创建从Oracle数据库到一个SQL Server的数据库链接。
为此,我添加了以下内容:
在档案tnsnames.ora
中:
sqlUserConn =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SID=sqlUserConn))
(HS=OK)
)
文件listener.ora
中的:
(SID_DESC=
(SID_NAME=sqlUserConn)
(ORACLE_HOME=C:\oraclexe\app\oracle\product\11.2.0\server)
(PROGRAM=dg4odbc)
)
文件sqlnet.ora
中的:
SQLNET.AUTHENTICATION_SERVICES = (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
文件initsqlUserConn.ora
中的:
HS_FDS_CONNECT_INFO = sqlUserConn
HS_FDS_TRACE_LEVEL = OFF
文件tnsnames.ora,sqlnet.ora和listener.ora放在** server \ network \ admin **中,而initsqlUserConn.ora放在** server \ hs \ admin **
中我有以下sql语句:
CREATE DATABASE LINK sqlUserConn CONNECT TO "USER" IDENTIFIED BY "PASSWORD" USING 'sqlUserConn';
然后测试db链接,我正在运行类似于:
的东西Select * from table@sqlUserConn
此命令触发以下错误:
ORA-12154:TNS:无法解析指定的连接标识符
显然,我做错了什么......但我仍然没有得到它......它应该可行,因为我看到很多用户这样做了
有人能指出我将SQL Server数据库链接到Oracle 11g的正确解决方案吗?
答案 0 :(得分:0)
首先,确保使用正确的DSN架构(32或64位)。如果使用不正确的架构,它将触发错误。
Windows上的Oracle有一个奇怪的行为,因此命令lsnrctl reload
或甚至使用lsnrctl stop
然后lsnrctl start
将无助于刷新指定文件中的信息(tnsnames,listener等)。 )。因此,唯一的解决方案是重新启动,然后检查dblink是否正常工作。