oracle用dblink跨库查询ORA-12154: TNS: 无法解析指定的连接标识符

zhanghua4109 2008-12-10 07:13:33
我在机子用netmanager建立了连接,
tnsnames.ora文件如下:
# TNSNAMES.ORA Network Configuration File: C:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

NC50 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = r51e)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = nc50)
)
)

NC_DEV =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.40)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ncdev)
)
)


NC_TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.16.46)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = nctest)
)
)

INST1_HTTP =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = r51e)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = MODOSE)
(PRESENTATION = http://HRService)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

listener.ora如下:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = r51e)(PORT = 1521))
)
)
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\ora92)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = nc50)
(ORACLE_HOME = C:\oracle\ora92)
(SID_NAME = nc50)
)
)
//用pl/sql都是可以连接访问的
//////////////////////////////////////////////////////////////////
跨库连接语句如下:
-- 建立数据库连接
create public database link
ncdev1 connect to ncdev identified by ncdev using 'ncdev';

select * from bd_corp@ncdev1;
-- 删除数据库连接
DROP PUBLIC DATABASE LINK ncdev1;

这个字符串用了两种'ncdev'和'nc_dev',都不行;

///////////////////////////////////////////////
提示错误如下:ORA-12154: TNS: 无法解析指定的连接标识符
在网上找好多资料,还是没有搞好,请高手们指一点,谢谢.

...全文
766 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
duqiangatom 2008-12-11
  • 打赏
  • 举报
回复
假设你的DB_LINK是想从DB1连接到DB2,你需要配置DB1机器上的tnsnames正确指向DB2。如果你确认DB1上的tnsnames中配置正确;那么再确认你正确的tnsnames被使用了,也就是说DB1机器上系统的环境变量指向哪个oracle的bin目录,使用的是不是你配置正确的那个tnsnames文件。
sleepzzzzz 2008-12-11
  • 打赏
  • 举报
回复
另一个帖里告诉你了,按照那样做就可以
昨天有个朋友也是同样的问题.
wiler 2008-12-11
  • 打赏
  • 举报
回复
db_link用的tnsname是数据库服务器上的
你在你自己的机器(客户端)建立的tnsname,服务器用不了
zhanghua4109 2008-12-11
  • 打赏
  • 举报
回复
自己搞定。谢谢各位

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧