新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > Oracle教程 > 正文:求教:ORA-12154: TNS:could not resolve the connect identifier specified

求教:ORA-12154: TNS:could not resolve the connect identifier specified

新客网 XKER.COM 2008-09-21 来源: 收藏本文

在程序中访问数据库,该程序和oracle数据库在同一台主机(服务器)上,但是,运行程序时,报错:ORA-12154: TNS:could not resolve the connect identifier specified

oracle数据库服务器端:
# listener.ora Network Configuration File: /opt/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
)
-------
# tnsnames.ora Network Configuration File: /opt/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
~ = ~
FLOWRT =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP地址1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = AAA)
)
)
-------

1,确定监听器已经起来
2,
[oracle@localhost admin]$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production>

--------------------------------------------------------------------------------
客户端在异机试一试,你的监听器不一定起来了,因为本地通信可能不会通过监听器连接(而使用进程间通信),你的sqlplus /nolog就是用进程间通信连接的。在主机执行$ORACLE_HOME/bin/lsnrctl status试一下,看看监听器到底起没起来.


--------------------------------------------------------------------------------
监听器确定起来了,因为将这个访问数据库的程序放到另外一台主机中,该程序能正常的执行,并完成对数据库的操作。


--------------------------------------------------------------------------------
如果是这样,说明listener没有问题,你同一台主机上运行程序有可能没有通过监听器连接,试一试将程序的oracle连接改成user/passwd,不使用tnsnames.ora解析。


--------------------------------------------------------------------------------
解决方法:
1. 打开<OracleHome>/network/admin/listener.ora文件,找到:

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/)
(PROGRAM = extproc)
)
)
2. 添加:
(SID_DESC =
(GLOBAL_DBNAME = ORACLE)
(ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/)
(SID_NAME = ORACLE)
)
3. 最后变成:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = AAA)
(ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1/)
(SID_NAME = AAA)

 )
  4. 保存文件,重启服务中的TNSListener,OK!


 

这台机器开始报这个错误之前,程序都能正常的访问数据库,可是转眼之间,没有进行任何其他的操作,它就报错了。。。

既然程序以前能正常运行,那么,就说明程序本身应该没有问题吧
有没有在不修改程序的前提下解决问题的方法呢?


 

照着做了,重启了监听器,重启了数据库,但是,还是有这个问题。。。


 

QUOTE:原帖由 god_orz 于 2008-4-15 16:31 发表
呼唤达人
$tnsping <service_name >

and tell us the result


 

[oracle@localhost admin]$ tnsping FlowRT

TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production>

标签:Oracle  
收藏】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
【重要声明】:新客网刊载此文仅为提供更多信息的目的,并不代表新客网同意文章的说法或描述,也不构成任何建议,对本文有任何异议,请在上面提出建议。
  • 阅读排行
  • 推荐阅读
  • 随机推荐